diff --git a/src/slopBed/slopBed.cpp b/src/slopBed/slopBed.cpp
index af2554d0667c2fc12cc384b53a409923d1de78f3..6026cfca0dcabbb9f93d8befffe39b32c2b993e2 100644
--- a/src/slopBed/slopBed.cpp
+++ b/src/slopBed/slopBed.cpp
@@ -41,6 +41,7 @@ BedSlop::~BedSlop(void) {
 void BedSlop::SlopBed() {
 
     BED bedEntry;     // used to store the current BED line from the BED file.
+    float l, r;
 
     _bed->Open();
     // report header first if asked.
@@ -53,9 +54,13 @@ void BedSlop::SlopBed() {
                 AddSlop(bedEntry);
             }
             else {
-                _leftSlop  = _leftSlop  * (float)bedEntry.size();
+	        l = _leftSlop;	
+                _leftSlop  = _leftSlop * (float)bedEntry.size();
+	        r = _rightSlop;	
                 _rightSlop = _rightSlop * (float)bedEntry.size();
                 AddSlop(bedEntry);
+	        _rightSlop = r;
+	        _leftSlop = l;
             }
             _bed->reportBedNewLine(bedEntry);
         }
@@ -86,7 +91,6 @@ void BedSlop::AddSlop(BED &bed) {
             bed.start = bed.start - (int)_leftSlop;
         else
             bed.start = 0;
-
         if ( ((CHRPOS)bed.end + (CHRPOS)_rightSlop) <= chromSize )
             bed.end = bed.end + (int)_rightSlop;
         else
diff --git a/test/slop/test-slop.sh b/test/slop/test-slop.sh
index f9589fd8cf4d43aa4c6be507b804defdff89f5a9..4314c973c7982e86682af33774f4b454d876d3b7 100644
--- a/test/slop/test-slop.sh
+++ b/test/slop/test-slop.sh
@@ -167,4 +167,10 @@ echo -e "chr1\t16778272\t16778572"| $BT slop -l 200 -r 200 -i - -g ../../genomes
 check obs exp
 rm obs exp
 
-
+echo "    slop.t15...\c"
+echo \
+"chr1	159	171
+chr1	90	210" > exp
+echo -e "chr1\t160\t170\nchr1\t100\t200"| $BT slop -b 0.1 -pct -i - -g ../../genomes/human.hg19.genome > obs
+check obs exp
+rm obs exp