diff --git a/src/p_mobj.c b/src/p_mobj.c
index a4231fa7473aae1644d52dd007a0f9f48f8bf0e1..50f6106d12e22fb26280730d861985d53aa66438 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -3902,11 +3902,15 @@ static void P_PlayerMobjThinker(mobj_t *mobj)
 			mobj->z += mobj->momz;
 			P_SetThingPosition(mobj);
 			P_CheckPosition(mobj, mobj->x, mobj->y);
+			mobj->floorz = tmfloorz;
+			mobj->ceilingz = tmceilingz;
 			goto animonly;
 		}
 		else if (mobj->player->powers[pw_carry] == CR_MACESPIN)
 		{
 			P_CheckPosition(mobj, mobj->x, mobj->y);
+			mobj->floorz = tmfloorz;
+			mobj->ceilingz = tmceilingz;
 			goto animonly;
 		}
 	}