diff --git a/src/p_mobj.c b/src/p_mobj.c
index 9bb68b1e81ef2d0d36727a1d70b9b20d14925132..f6519d436a4940643422d54ab7b57511ffc457fe 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -11240,6 +11240,7 @@ void P_RemoveSavegameMobj(mobj_t *mobj)
 
 	// free block
 	P_RemoveThinker((thinker_t *)mobj);
+	R_RemoveMobjInterpolator(mobj);
 }
 
 static CV_PossibleValue_t respawnitemtime_cons_t[] = {{1, "MIN"}, {300, "MAX"}, {0, NULL}};
diff --git a/src/r_fps.c b/src/r_fps.c
index ae23b5d1b1a07afe3b6b34131c7a5a211f7100ca..2d30c9f01920959c783da056d1db2f0858969209 100644
--- a/src/r_fps.c
+++ b/src/r_fps.c
@@ -725,7 +725,7 @@ void R_RemoveMobjInterpolator(mobj_t *mobj)
 
 	if (interpolated_mobjs_len == 0) return;
 
-	for (i = 0; i < interpolated_mobjs_len - 1; i++)
+	for (i = 0; i < interpolated_mobjs_len; i++)
 	{
 		if (interpolated_mobjs[i] == mobj)
 		{