diff --git a/src/modules/mc_pos_control/mc_pos_control_main.cpp b/src/modules/mc_pos_control/mc_pos_control_main.cpp
index 54ea44e050710d45a060326b645581e8d0716c5c..26a9bffd19146512dc448efbc430bb3771c9ec70 100644
--- a/src/modules/mc_pos_control/mc_pos_control_main.cpp
+++ b/src/modules/mc_pos_control/mc_pos_control_main.cpp
@@ -684,7 +684,14 @@ MulticopterPositionControl::run()
 				// don't control position in xy
 				setpoint.x = setpoint.y = NAN;
 				setpoint.vx = setpoint.vy = NAN;
-				setpoint.thrust[0] = setpoint.thrust[1] = 0.0f; // just keeping pointing upwards
+				setpoint.thrust[0] = setpoint.thrust[1] = NAN;
+
+				if (PX4_ISFINITE(_states.velocity(0)) && PX4_ISFINITE(_states.velocity(1))) {
+					setpoint.vx = setpoint.vy = NAN; // try to keep zero velocity
+
+				} else {
+					setpoint.thrust[0] = setpoint.thrust[1] = 0.0f; // just keeping pointing upwards
+				}
 			}
 
 			if (_vehicle_land_detected.landed && !_in_smooth_takeoff && !PX4_ISFINITE(setpoint.thrust[2])) {