Index: /libmpc/branches/r2d/libmpcdec/mpc_decoder.c
===================================================================
--- /libmpc/branches/r2d/libmpcdec/mpc_decoder.c	(revision 242)
+++ /libmpc/branches/r2d/libmpcdec/mpc_decoder.c	(revision 243)
@@ -523,4 +523,6 @@
 		d->Res_L[Max_used_Band-1] = mpc_bits_huff_dec(r, mpc_table_HuffRes[0]);
 		d->Res_R[Max_used_Band-1] = mpc_bits_huff_dec(r, mpc_table_HuffRes[0]);
+		if (d->Res_L[Max_used_Band-1] > 15) d->Res_L[Max_used_Band-1] -= 17;
+		if (d->Res_R[Max_used_Band-1] > 15) d->Res_R[Max_used_Band-1] -= 17;
 		for ( n = Max_used_Band - 2; n >= 0; n--) {
 			d->Res_L[n] = mpc_bits_huff_dec(r, mpc_table_HuffRes[d->Res_L[n + 1] > 2]) + d->Res_L[n + 1];
Index: /libmpc/branches/r2d/libmpcenc/encode_sv7.c
===================================================================
--- /libmpc/branches/r2d/libmpcenc/encode_sv7.c	(revision 242)
+++ /libmpc/branches/r2d/libmpcenc/encode_sv7.c	(revision 243)
@@ -177,6 +177,12 @@
 
 	if (MaxBand) {
-		writeBits(e, HuffRes[0][Res_L[MaxBand - 1]].Code, HuffRes[0][Res_L[MaxBand - 1]].Length);
-		writeBits(e, HuffRes[0][Res_R[MaxBand - 1]].Code, HuffRes[0][Res_R[MaxBand - 1]].Length);
+		{
+			int tmp = Res_L[MaxBand - 1];
+			if (tmp < 0) tmp += 17;
+			writeBits(e, HuffRes[0][tmp].Code, HuffRes[0][tmp].Length);
+			tmp = Res_R[MaxBand - 1];
+			if (tmp < 0) tmp += 17;
+			writeBits(e, HuffRes[0][tmp].Code, HuffRes[0][tmp].Length);
+		}
 		for ( n = MaxBand - 2; n >= 0; n--) {
 			int tmp = Res_L[n] - Res_L[n + 1];
