diff --git a/src/p_mobj.c b/src/p_mobj.c
index 6b01f0a84033044ef7072383d32cf5dc958a5996..d7ef576d3372a90590c449d18148089cae2f3788 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -9787,10 +9787,12 @@ void P_RespawnSpecials(void)
 			// Transfer flags2 (strongbox, objectflip)
 			newmobj->flags2 = box->flags2;
 			P_RemoveMobj(box); // make sure they disappear
-			continue;
+			numgotboxes--; // you've restored a box, remove it from the count
+			//continue; -- irrelevant?
 		}
 
-		numgotboxes = 0;
+		if (numgotboxes < 0)
+			numgotboxes = 0;
 	}
 
 	// only respawn items when cv_itemrespawn is on