diff --git a/src/utils/NewChromsweep/NewChromsweep.cpp b/src/utils/NewChromsweep/NewChromsweep.cpp
index 8d8bc2b203174464e2d5e5c7994de63eaadea010..dffb67fb856fb18dc45cd402aa435b7962acb945 100644
--- a/src/utils/NewChromsweep/NewChromsweep.cpp
+++ b/src/utils/NewChromsweep/NewChromsweep.cpp
@@ -129,7 +129,7 @@ void NewChromSweep::scanCache(int dbIdx, RecordKeyVector &retList) {
         if (_currQueryRec->sameChrom(cacheRec) && !_currQueryRec->after(cacheRec)) {
             if (intersects(_currQueryRec, cacheRec)) {
                 retList.push_back(cacheRec);
-            } else break; // cacheRec is after the query rec, stop scanning.
+            } else if (cacheRec->after(_currQueryRec)) break; // cacheRec is after the query rec, stop scanning.
             cacheIter = _caches[dbIdx].next();
         }
         else {
@@ -150,6 +150,7 @@ void NewChromSweep::clearCache(int dbIdx)
 }
 
 void NewChromSweep::masterScan(RecordKeyVector &retList) {
+
 	for (int i=0; i < _numDBs; i++) {
 		if (dbFinished(i) || chromChange(i, retList, true)) {
 			continue;
diff --git a/test/intersect/bug167_strandSweep.bed b/test/intersect/bug167_strandSweep.bed
new file mode 100644
index 0000000000000000000000000000000000000000..f37a119df559c233737a551322695da37d972657
--- /dev/null
+++ b/test/intersect/bug167_strandSweep.bed
@@ -0,0 +1,10 @@
+chr1	9550913	9551859	b.C.1	0	-
+chr1	9550913	9621173	b	1	-
+chr1	9551859	9553903	b.I.1	0	-
+chr1	9553903	9553952	b.C.2	0	-
+chr1	9553952	9609630	b.I.2	0	-
+chr1	9602747	9603392	f.I.1	0	+
+chr1	9603392	9603555	f.C.2	0	+
+chr1	9603392	9603555	g.C.3	0	+
+chr1	9603555	9609916	f.I.2	0	+
+chr1	9603555	9609916	g.I.3	0	+
diff --git a/test/intersect/test-intersect.sh b/test/intersect/test-intersect.sh
index f01d8337825da4ae223d1600910eb7dc6dae0ac0..7af4d715f934e95c66c0c6e2c9d5e3d7ead987d8 100644
--- a/test/intersect/test-intersect.sh
+++ b/test/intersect/test-intersect.sh
@@ -502,7 +502,25 @@ $BT intersect -a a.bed -b b.bed -f 1.00001 2>&1 > /dev/null | cat - | head -2 |
 check exp obs
 rm exp obs
 
+##################################################################bug167_strandSweep.bed
+#  Test that -s works with chromsweep
+##################################################################
+echo "    intersect.t41...\c"
+echo \
+"22" > exp
+$BT intersect -a bug167_strandSweep.bed -b bug167_strandSweep.bed -sorted -s -wa -wb | wc -l > obs
+check exp obs
+rm exp obs
 
+##################################################################bug167_strandSweep.bed
+#  Test that -S works with chromsweep
+##################################################################
+echo "    intersect.t42...\c"
+echo \
+"20" > exp
+$BT intersect -a bug167_strandSweep.bed -b bug167_strandSweep.bed -sorted -S -wa -wb | wc -l > obs
+check exp obs
+rm exp obs
 
 rm one_block.bam two_blocks.bam three_blocks.bam