diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/ATShiftStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/ATShiftStrategy.cs
index e825fcab839bea6c55ce2506ef41174c6fa6e01f..94dc120c21a8c6bdee90fafee8ffaac091eb9cec 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/ATShiftStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/ATShiftStrategy.cs
@@ -178,9 +178,15 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl.Shiftstrategies
 			var disengageTCEngineSpeedLowerIdle = braking && torqueNegative && gear1C &&
 												inAngularVelocity.IsSmallerOrEqual(DataBus.EngineInfo.EngineIdleSpeed);
 
-			if (disengageBeforeHalting || disengageTCEngineSpeedLowerIdle || disengageAngularVelocityZero ||
-				disengageTOutNegativeAndTInPositive) {
-				_nextGear.SetState(absTime, disengaged: true, gear: Gears.First());
+			if (disengageBeforeHalting
+				|| disengageTCEngineSpeedLowerIdle
+				|| disengageAngularVelocityZero
+				|| disengageTOutNegativeAndTInPositive)
+			{
+				// In order to make it to the halting distance do not allow disengaging if propulsion from engine is needed.
+				bool allowDisengageGear = braking && !torqueNegative && slowerThanDisengageSpeed;
+
+				_nextGear.SetState(absTime, disengaged: !allowDisengageGear, gear: Gears.First());
 				return true;
 			}