diff --git a/.gitignore b/.gitignore
index d831ebb0a5aa8522d6d869482511aaf7f19d0c66..d62c880bdc7fb71e7c9499e9cbbfef8f78e2604a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,4 @@ docs/_build/
 src/utils/version/version_git.h
 .project
 .cproject
+nbproject
diff --git a/src/bamToFastq/bamToFastq.cpp b/src/bamToFastq/bamToFastq.cpp
index 8b80e7f729c1cedb719da3649da0a917aad2577b..245554c73aa8110cb19cdb566a4c5dba66cc50a1 100644
--- a/src/bamToFastq/bamToFastq.cpp
+++ b/src/bamToFastq/bamToFastq.cpp
@@ -79,20 +79,26 @@ void BamToFastq::PairedFastq() {
     reader.Open(_bamFile);
     // rip through the BAM file and convert each mapped entry to BEDPE
     BamAlignment bam1, bam2;
-    while (reader.GetNextAlignment(bam1)) {
+    bool shouldConsumeReads = true;
+    while (true) {
         
-        reader.GetNextAlignment(bam2);        
+        if (shouldConsumeReads) {
+            if (!reader.GetNextAlignment(bam1) || !reader.GetNextAlignment(bam2)) break;
+        } else {
+            shouldConsumeReads = true;
+        }
         if (bam1.Name != bam2.Name) {
             while (bam1.Name != bam2.Name)
             {
                 if (bam1.IsPaired()) 
                 {
                     cerr << "*****WARNING: Query " << bam1.Name
-                         << " is marked as paired, but it's mate does not occur"
+                         << " is marked as paired, but its mate does not occur"
                          << " next to it in your BAM file.  Skipping. " << endl;
                 }
                 bam1 = bam2;
-                reader.GetNextAlignment(bam2);
+                if (!reader.GetNextAlignment(bam2)) break;
+                shouldConsumeReads = false;
             }
         }
         else if (bam1.IsPaired() && bam2.IsPaired()) {
diff --git a/test/bamtofastq/golden.fq b/test/bamtofastq/golden.fq
new file mode 100644
index 0000000000000000000000000000000000000000..78819d813d217b9ea7eeb96707fd494967211bb4
--- /dev/null
+++ b/test/bamtofastq/golden.fq
@@ -0,0 +1,8 @@
+@paired-1/1
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
++
+DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+@paired-2/1
+TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
++
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
diff --git a/test/bamtofastq/golden.fq2 b/test/bamtofastq/golden.fq2
new file mode 100644
index 0000000000000000000000000000000000000000..4d32c42e6fd11b6a91c6cb82c206ae192c363a25
--- /dev/null
+++ b/test/bamtofastq/golden.fq2
@@ -0,0 +1,8 @@
+@paired-1/2
+GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
++
+EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
+@paired-2/2
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
++
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
diff --git a/test/bamtofastq/test-bamtofastq.sh b/test/bamtofastq/test-bamtofastq.sh
new file mode 100755
index 0000000000000000000000000000000000000000..5cd672fc0d29a066d03d6b010cdc5562da184c24
--- /dev/null
+++ b/test/bamtofastq/test-bamtofastq.sh
@@ -0,0 +1,20 @@
+BT=${BT-../../bin/bedtools}
+
+check()
+{
+	if diff $1 $2; then
+    	echo ok
+	else
+    	echo fail
+	fi
+}
+
+samtools view -Sb test.sam > test.bam 2> /dev/null
+
+$BT bamtofastq -i test.bam -fq test.fq -fq2 test.fq2 2> /dev/null
+
+check test.fq golden.fq
+check test.fq2 golden.fq2
+
+rm test.bam test.fq test.fq2
+
diff --git a/test/bamtofastq/test.sam b/test/bamtofastq/test.sam
new file mode 100644
index 0000000000000000000000000000000000000000..3d64014030c354d1155ab2d47f48ca89199444d2
--- /dev/null
+++ b/test/bamtofastq/test.sam
@@ -0,0 +1,7 @@
+@HD	VN:1.0	GO:none	SO:coordinate
+@SQ	SN:chr1	LN:249250621
+paired-1	1	chr1	1	40	30M	*	0	0	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA	DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD	MD:Z:50
+paired-1	1	chr1	1	100	30M	*	0	0	GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG	EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE	MD:Z:50
+unpaired	1	chr1	1	100	30M	*	0	0	GAAGGCCACCGCCGCGGTTATTTTCCTTCA	CCCDDB?=FJIIJIGFJIJHIJJJJJJJJI	MD:Z:50
+paired-2	1	chr1	1	40	30M	*	0	0	TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT	FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF	MD:Z:50
+paired-2	1	chr1	1	100	30M	*	0	0	CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC	HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH	MD:Z:50