diff --git a/src/p_user.c b/src/p_user.c
index 553086ebb35edb1de1392441ea929daa821bdcac..1b49e52e80565287f1f6183e80b314d69c2b2ca9 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -8046,7 +8046,7 @@ void P_MovePlayer(player_t *player)
 	}
 
 	// If Springing (or nojumpspinning), but travelling DOWNWARD, change back!
-	if ((player->panim == PA_SPRING && P_MobjFlip(player->mo)*player->mo->momz < 0)
+	if (((player->panim == PA_SPRING || player->mo->state-states == S_PLAY_WALK) && P_MobjFlip(player->mo)*player->mo->momz < 0)
 		|| ((((player->charflags & SF_NOJUMPSPIN) && (player->pflags & PF_JUMPED) && player->panim == PA_JUMP))
 			&& (P_MobjFlip(player->mo)*player->mo->momz < 0)))
 		P_SetPlayerMobjState(player->mo, S_PLAY_FALL);