diff --git a/src/p_mobj.c b/src/p_mobj.c
index 0239e860ffcc2c8b450b5f4ff83906ad62f693b3..8c4c18b8226e8017f27ae808db1361c3eb1fe075 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -4056,7 +4056,10 @@ void P_SnowThinker(precipmobj_t *mobj)
 
 	// adjust height
 	if ((mobj->z += mobj->momz) <= mobj->floorz)
+	{
 		mobj->z = mobj->ceilingz;
+		P_ResetPrecipitationInterpolationState(mobj);
+	}
 }
 
 void P_RainThinker(precipmobj_t *mobj)
@@ -4082,6 +4085,7 @@ void P_RainThinker(precipmobj_t *mobj)
 			return;
 
 		mobj->z = mobj->ceilingz;
+		P_ResetPrecipitationInterpolationState(mobj);
 		P_SetPrecipMobjState(mobj, S_RAIN1);
 
 		return;