diff --git a/src/p_mobj.c b/src/p_mobj.c
index 6c9dc59af2ac3a5a390ed10ea83a8092c45a0675..cda1c3cf7947037fc182b9c5ec11d8991817d8ad 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -48,7 +48,7 @@ static size_t interpolated_mobjs_capacity = 0;
 
 // NOTE: This will NOT check that the mobj has already been added, for perf
 // reasons.
-static void AddInterpolatedMobj(mobj_t *mobj)
+void P_AddMobjInterpolator(mobj_t *mobj)
 {
 	if (interpolated_mobjs_len >= interpolated_mobjs_capacity)
 	{
@@ -11010,7 +11010,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
 	if (CheckForReverseGravity && !(mobj->flags & MF_NOBLOCKMAP))
 		P_CheckGravity(mobj, false);
 
-	AddInterpolatedMobj(mobj);
+	P_AddMobjInterpolator(mobj);
 
 	return mobj;
 }
diff --git a/src/p_mobj.h b/src/p_mobj.h
index 5ba79e7179ceeafd1f966c86b07833e38cd99b3b..9b5a215a2e8199192203edfa3336bfa00d9fffbf 100644
--- a/src/p_mobj.h
+++ b/src/p_mobj.h
@@ -506,6 +506,8 @@ void P_EmeraldManager(void);
 
 // Initialize internal mobj interpolator list (e.g. during level loading)
 void P_InitMobjInterpolators(void);
+// Add interpolation state for the given mobj
+void P_AddMobjInterpolator(mobj_t *mobj);
 void P_UpdateMobjInterpolators(void);
 void P_ResetMobjInterpolationState(mobj_t *mobj);
 void P_ResetPrecipitationMobjInterpolationState(precipmobj_t *mobj);
diff --git a/src/p_saveg.c b/src/p_saveg.c
index 46b509d19ce94e7c32f8e5174ef56453661c73ac..eed5941988b657aa60f838401973bfc908673dc2 100644
--- a/src/p_saveg.c
+++ b/src/p_saveg.c
@@ -2969,6 +2969,8 @@ static thinker_t* LoadMobjThinker(actionf_p1 thinker)
 
 	mobj->info = (mobjinfo_t *)next; // temporarily, set when leave this function
 
+	P_AddMobjInterpolator(mobj);
+
 	return &mobj->thinker;
 }