PR #894 (without BOOK implementation)
diff --git a/src/lib/openjp2/mqc.c b/src/lib/openjp2/mqc.c
index 7119c3a..f5523ff 100644
--- a/src/lib/openjp2/mqc.c
+++ b/src/lib/openjp2/mqc.c
@@ -324,10 +324,12 @@
 	
 	if (*mqc->bp != 0xff) {
 		mqc->bp++;
+        *mqc->bp = 0;
 	}
 }
 
 void opj_mqc_bypass_init_enc(opj_mqc_t *mqc) {
+    opj_mqc_byteout(mqc);
 	mqc->c = 0;
 	mqc->ct = 8;
 	/*if (*mqc->bp == 0xff) {
@@ -362,6 +364,8 @@
 		}
 		mqc->bp++;
 		*mqc->bp = (OPJ_BYTE)mqc->c;
+        mqc->bp++;
+        *mqc->bp = 0;
 		mqc->ct = 8;
 		mqc->c = 0;
 	}
diff --git a/src/lib/openjp2/t1.c b/src/lib/openjp2/t1.c
index 453d290..d4d4c73 100644
--- a/src/lib/openjp2/t1.c
+++ b/src/lib/openjp2/t1.c
@@ -2102,9 +2102,9 @@
 		/* Code switch "RESTART" (i.e. TERMALL) */
 		if ((cblksty & J2K_CCP_CBLKSTY_TERMALL)	&& !((passtype == 2) && (bpno - 1 < 0))) {
 			if (type == T1_TYPE_RAW) {
-				opj_mqc_flush(mqc);
+                /*opj_mqc_flush(mqc);*/
+                opj_mqc_bypass_flush_enc(mqc);
 				correction = 1;
-				/* correction = mqc_bypass_flush_enc(); */
 			} else {			/* correction = mqc_restart_enc(); */
 				opj_mqc_flush(mqc);
 				correction = 1;
@@ -2114,9 +2114,9 @@
 			if (((bpno < ((OPJ_INT32) (cblk->numbps) - 4) && (passtype > 0))
 				|| ((bpno == ((OPJ_INT32)cblk->numbps - 4)) && (passtype == 2))) && (cblksty & J2K_CCP_CBLKSTY_LAZY)) {
 				if (type == T1_TYPE_RAW) {
-					opj_mqc_flush(mqc);
+                    /*opj_mqc_flush(mqc);*/
+                    opj_mqc_bypass_flush_enc(mqc);
 					correction = 1;
-					/* correction = mqc_bypass_flush_enc(); */
 				} else {		/* correction = mqc_restart_enc(); */
 					opj_mqc_flush(mqc);
 					correction = 1;
@@ -2132,7 +2132,8 @@
 			bpno--;
 		}
 
-		if (pass->term && bpno > 0) {
+        /*if (pass->term && bpno > 0) {*/
+        if (pass->term && (bpno > 0 || (bpno == 0 && passtype < 2))) {
 			type = ((bpno < ((OPJ_INT32) (cblk->numbps) - 4)) && (passtype < 2) && (cblksty & J2K_CCP_CBLKSTY_LAZY)) ? T1_TYPE_RAW : T1_TYPE_MQ;
 			if (type == T1_TYPE_RAW)
 				opj_mqc_bypass_init_enc(mqc);