diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c
index ec78a3d352ec60be80a25b9f33004ca91c20b7e1..6d2f8c28263be4535942d3e9debcab93bb202160 100644
--- a/src/hardware/hw_main.c
+++ b/src/hardware/hw_main.c
@@ -5300,21 +5300,24 @@ static void HWR_ProjectSprite(mobj_t *thing)
 	if (thing->renderflags & RF_SHADOWEFFECTS)
 	{
 		mobj_t *caster = thing->target;
-		interpmobjstate_t casterinterp = {};
-
-		if (R_UsingFrameInterpolation() && !paused)
-		{
-			R_InterpolateMobjState(caster, rendertimefrac, &casterinterp);
-		}
-		else
-		{
-			R_InterpolateMobjState(caster, FRACUNIT, &casterinterp);
-		}
 
 		if (caster && !P_MobjWasRemoved(caster))
 		{
-			fixed_t groundz = R_GetShadowZ(thing, NULL);
-			fixed_t floordiff = abs(((thing->eflags & MFE_VERTICALFLIP) ? caster->height : 0) + casterinterp.z - groundz);
+			interpmobjstate_t casterinterp = {};
+			fixed_t groundz;
+			fixed_t floordiff; 
+
+			if (R_UsingFrameInterpolation() && !paused)
+			{
+				R_InterpolateMobjState(caster, rendertimefrac, &casterinterp);
+			}
+			else
+			{
+				R_InterpolateMobjState(caster, FRACUNIT, &casterinterp);
+			}
+			
+			groundz = R_GetShadowZ(thing, NULL);
+			floordiff = abs(((thing->eflags & MFE_VERTICALFLIP) ? caster->height : 0) + casterinterp.z - groundz);
 
 			shadowheight = FIXED_TO_FLOAT(floordiff);
 			shadowscale = FIXED_TO_FLOAT(FixedMul(FRACUNIT - floordiff/640, casterinterp.scale));