diff --git a/engine/common/pmove.c b/engine/common/pmove.c
index b525c5d60..655ccaa4e 100644
--- a/engine/common/pmove.c
+++ b/engine/common/pmove.c
@@ -269,7 +269,7 @@ int PM_StepSlideMove (qboolean in_air)
 		if (!(blocked & BLOCKED_STEP))
 			return blocked;
 
-		org = (pmove.velocity < 0) ? pmove.origin : original;	// cryptic, eh?
+		org = (originalvel[2] < 0) ? pmove.origin : original;
 		VectorCopy (org, dest);
 		dest[2] -= pm_stepheight;
 		trace = PM_PlayerTrace (org, dest);
@@ -298,6 +298,9 @@ int PM_StepSlideMove (qboolean in_air)
 		VectorCopy (trace.endpos, pmove.origin);
 	}
 
+	if (in_air && originalvel[2] < 0)
+		pmove.velocity[2] = 0;
+
 	PM_SlideMove ();
 
 // press down the stepheight