more compression tests
diff --git a/lib/zstd_compress.c b/lib/zstd_compress.c
index 7e81dc1..cfc590a 100644
--- a/lib/zstd_compress.c
+++ b/lib/zstd_compress.c
@@ -1558,7 +1558,7 @@
             const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
             const BYTE* const repMatch = repBase + repIndex;
             if ((repIndex <= dictLimit-4) || (repIndex >= dictLimit))
-            if (MEM_read32(ip+1) == MEM_read32(repMatch))            
+            if (MEM_read32(ip+1) == MEM_read32(repMatch))
             {
                 /* repcode detected we should take it */
                 const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
@@ -1598,7 +1598,7 @@
                 const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
                 const BYTE* const repMatch = repBase + repIndex;
                 if ((repIndex <= dictLimit-4) || (repIndex >= dictLimit))
-                if (MEM_read32(ip) == MEM_read32(repMatch))            
+                if (MEM_read32(ip) == MEM_read32(repMatch))
                 {
                     /* repcode detected */
                     size_t repLength;
@@ -1642,7 +1642,7 @@
                     const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
                     const BYTE* const repMatch = repBase + repIndex;
                     if ((repIndex <= dictLimit-4) || (repIndex >= dictLimit))
-                    if (MEM_read32(ip) == MEM_read32(repMatch))            
+                    if (MEM_read32(ip) == MEM_read32(repMatch))
                     {
                         /* repcode detected */
                         size_t repLength;
@@ -1699,7 +1699,7 @@
             const U32 repIndex = (U32)((ip-base) - offset_2);
             const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
             const BYTE* const repMatch = repBase + repIndex;
-            if (MEM_read32(ip) == MEM_read32(repMatch))            
+            if (MEM_read32(ip) == MEM_read32(repMatch))
             {
                 /* repcode detected we should take it */
                 const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
@@ -1874,6 +1874,7 @@
         ctxPtr->dictLimit = (U32)(ctxPtr->nextSrc - ctxPtr->base);
         ctxPtr->dictBase = ctxPtr->base;
         ctxPtr->base += ip - ctxPtr->nextSrc;
+        ctxPtr->nextToUpdate = ctxPtr->dictLimit;
     }
 
     /* input-dictionary overlap */
diff --git a/programs/Makefile b/programs/Makefile
index f46afab..fe2d341 100644
--- a/programs/Makefile
+++ b/programs/Makefile
@@ -153,19 +153,49 @@
 	echo foo | ./zstd > /dev/full; if [ $$? -eq 0 ] ; then echo "write error not detected!"; false; fi
 	echo foo | ./zstd | ./zstd -d > /dev/full; if [ $$? -eq 0 ] ; then echo "write error not detected!"; false; fi
 	@echo "**** zstd round-trip tests **** "
-	./datagen          | md5sum > tmp1
-	./datagen          | ./zstd -v    | ./zstd -d  | md5sum > tmp2
-	diff tmp1 tmp2   
-	./datagen          | ./zstd -6 -v | ./zstd -d  | md5sum > tmp2
-	diff tmp1 tmp2   
-	./datagen -g256MB  | md5sum > tmp1
-	./datagen -g256MB  | ./zstd -v    | ./zstd -d  | md5sum > tmp2
-	diff tmp1 tmp2   
-	./datagen -g256MB  | ./zstd -3 -v | ./zstd -d  | md5sum > tmp2
-	diff tmp1 tmp2   
-	./datagen -g6GB -P99 | md5sum > tmp1
-	./datagen -g6GB -P99 | ./zstd -vq | ./zstd -d  | md5sum > tmp2
-	diff tmp1 tmp2   
+	@./datagen             | md5sum > tmp1
+	./datagen              | ./zstd -v    | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	./datagen              | ./zstd -6 -v | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	@./datagen -g256MB     | md5sum > tmp1
+	./datagen -g256MB      | ./zstd -v    | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	./datagen -g256MB      | ./zstd -v2   | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	./datagen -g256MB      | ./zstd -v3   | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	@./datagen -g128MB -P60| md5sum > tmp1
+	./datagen -g128MB -P60 | ./zstd -v4   | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	./datagen -g128MB -P60 | ./zstd -v5   | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	./datagen -g128MB -P60 | ./zstd -v6   | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	@./datagen -g64MB -P70 | md5sum > tmp1
+	./datagen -g64MB -P70  | ./zstd -v7   | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	./datagen -g64MB -P70  | ./zstd -v8   | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	./datagen -g64MB -P70  | ./zstd -v9   | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	@./datagen -g32MB -P75 | md5sum > tmp1
+	./datagen -g32MB -P75  | ./zstd -v10  | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	./datagen -g32MB -P75  | ./zstd -v11  | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	./datagen -g32MB -P75  | ./zstd -v12  | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	@./datagen -g16MB -P80 | md5sum > tmp1
+	./datagen -g16MB -P80  | ./zstd -v13  | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	./datagen -g16MB -P80  | ./zstd -v14  | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	./datagen -g16MB -P80  | ./zstd -v15  | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
+	./datagen -g6GB -P99   | md5sum > tmp1
+	./datagen -g6GB -P99   | ./zstd -vq   | ./zstd -d  | md5sum > tmp2
+	@diff tmp1 tmp2   
 
 test-zstd32: zstd32 datagen
 	./datagen          | ./zstd32 -v  | ./zstd32 -d > $(VOID)
diff --git a/programs/fileio.c b/programs/fileio.c
index 04a609f..c599c47 100644
--- a/programs/fileio.c
+++ b/programs/fileio.c
@@ -283,7 +283,7 @@
         inSize = fread(inSlot, (size_t)1, blockSize, finput);
         if (inSize==0) break;
         filesize += inSize;
-        DISPLAYUPDATE(2, "\rRead : %u MB   ", (U32)(filesize>>20));
+        DISPLAYUPDATE(2, "\rRead : %u MB  ", (U32)(filesize>>20));
 
         /* Compress Block */
         cSize = ZSTD_compressContinue(ctx, outBuff, outBuffSize, inSlot, inSize);