diff --git a/Python/ceval.c b/Python/ceval.c
index 49582dc..82a95a9 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -625,8 +625,7 @@
 
 #define INSTR_OFFSET()	(next_instr - first_instr)
 #define NEXTOP()	(*next_instr++)
-#define OPARG()		(next_instr[0] + (next_instr[1]<<8))
-#define SKIPARG()	(next_instr += 2)
+#define NEXTARG()	(next_instr += 2, (next_instr[-1]<<8) + next_instr[-2])
 #define JUMPTO(x)	(next_instr = first_instr + (x))
 #define JUMPBY(x)	(next_instr += (x))
 
@@ -862,10 +861,8 @@
 		/* Extract opcode and argument */
 
 		opcode = NEXTOP();
-		if (HAS_ARG(opcode)) {
-			oparg = OPARG();
-			SKIPARG();
-		}
+		if (HAS_ARG(opcode))
+			oparg = NEXTARG();
 	  dispatch_opcode:
 #ifdef DYNAMIC_EXECUTION_PROFILE
 #ifdef DXPAIRS
@@ -1901,7 +1898,7 @@
 		case BUILD_TUPLE:
 			x = PyTuple_New(oparg);
 			if (x != NULL) {
-				while (oparg--) {
+				for (; --oparg >= 0;) {
 					w = POP();
 					PyTuple_SET_ITEM(x, oparg, w);
 				}
@@ -1913,7 +1910,7 @@
 		case BUILD_LIST:
 			x =  PyList_New(oparg);
 			if (x != NULL) {
-				while (oparg--) {
+				for (; --oparg >= 0;) {
 					w = POP();
 					PyList_SET_ITEM(x, oparg, w);
 				}
@@ -2185,7 +2182,7 @@
 					x = NULL;
 					break;
 				}
-				while (oparg--) {
+				while (--oparg >= 0) {
 					w = POP();
 					PyTuple_SET_ITEM(v, oparg, w);
 				}
@@ -2210,7 +2207,7 @@
 					x = NULL;
 					break;
 				}
-				while (nfree--) {
+				while (--nfree >= 0) {
 					w = POP();
 					PyTuple_SET_ITEM(v, nfree, w);
 				}
@@ -2224,7 +2221,7 @@
 					x = NULL;
 					break;
 				}
-				while (oparg--) {
+				while (--oparg >= 0) {
 					w = POP();
 					PyTuple_SET_ITEM(v, oparg, w);
 				}
@@ -2252,8 +2249,7 @@
 
 		case EXTENDED_ARG:
 			opcode = NEXTOP();
-			oparg = oparg<<16 | OPARG();
-			SKIPARG();
+			oparg = oparg<<16 | NEXTARG();
 			goto dispatch_opcode;
 
 		default:
@@ -3202,7 +3198,7 @@
 		}
 
 		if (size > 0) {
-			while (size--) {
+			while (--size >= 0) {
 				addr += *p++;
 				if (*p++)
 					break;
@@ -3617,7 +3613,7 @@
 	}
 	if (kwdict == NULL)
 		return NULL;
-	while (nk--) {
+	while (--nk >= 0) {
 		int err;
 		PyObject *value = EXT_POP(*pp_stack);
 		PyObject *key = EXT_POP(*pp_stack);
@@ -3662,7 +3658,7 @@
 			PyTuple_SET_ITEM(callargs, nstack + i, a);
 		}
 	}
-	while (nstack--) {
+	while (--nstack >= 0) {
 		w = EXT_POP(*pp_stack);
 		PyTuple_SET_ITEM(callargs, nstack, w);
 	}
@@ -3677,7 +3673,7 @@
 
 	if (args == NULL)
 		return NULL;
-	while (na--) {
+	while (--na >= 0) {
 		w = EXT_POP(*pp_stack);
 		PyTuple_SET_ITEM(args, na, w);
 	}
