With the completion of the draft of the human genome in the last decade, attention has turned to sequencing the genomes of other living things. The human genome was expensive to finish in terms of both cost and time, and as the number of other organisms we wish to sequence grows, we are trying to find cheaper and faster ways of doing assembly. When a genome is sequenced, the initial data consists of short paired segments of sequence called reads. The paired reads together make up a mate pair. We know the sequence of bases in each read as well as approximately how far apart these paired reads are in the original genome. This distance plus the lengths of each of the mates is called the insert length. Given this data, we must now assemble the genome. Currently, there are several assembly algorithms in use which will produce a draft of the genome. This draft may contain gaps and small errors. Traditionally, scientists would go back into the lab and resequence the missing or incorrect regions. This is often an expensive procedure. Our research focuses on using the existing read and mate pair data to fix these mistakes without resorting to expensive techniques. To do this we appeal to an idea from mathematics of solving boundary value problems and apply this reasoning to filling gaps and correcting errors. Using this approach, our algorithm attempts to produce all possible assemblies of reads for a given region. We tested our procedure using data from 22 bacterial genomes with collectively 200 gaps or errors. We were able to fix 125 of these using existing data. We also implemented our algorithm on an assembly of Bos taurus, and were able to fill approximately 4000 gaps in sequence totalling 8 Mbp.