diff --git a/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
index 46600df4d820884a219e565642c932de275b5ffa..1f6e03036c7bc530e57e77aed3b12cffd59b435f 100644
--- a/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
@@ -93,30 +93,46 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			}
 
 
-			Meter newds;
-			switch (NextDrivingAction.Action) {
-				case DrivingBehavior.Coasting:
-					var coastingDistance = Formulas.DecelerationDistance(v2, NextDrivingAction.NextTargetSpeed,
-						Driver.DriverData.LookAheadCoasting.Deceleration);
-
-					// if the distance at the end of the simulation interval is smaller than the new ActionDistance
-					// we are safe - go ahead...
-					if ((Driver.DataBus.Distance + ds).IsSmallerOrEqual(NextDrivingAction.TriggerDistance - coastingDistance,
-						Constants.SimulationSettings.DriverActionDistanceTolerance)) {
+			Meter newds = 0.SI<Meter>();
+			if (CurrentDrivingMode == DrivingMode.DrivingModeDrive) {
+				switch (NextDrivingAction.Action) {
+					case DrivingBehavior.Coasting:
+						var coastingDistance = Formulas.DecelerationDistance(v2, NextDrivingAction.NextTargetSpeed,
+							Driver.DriverData.LookAheadCoasting.Deceleration);
+
+						// if the distance at the end of the simulation interval is smaller than the new ActionDistance
+						// we are safe - go ahead...
+						if ((Driver.DataBus.Distance + ds).IsSmallerOrEqual(NextDrivingAction.TriggerDistance - coastingDistance,
+							Constants.SimulationSettings.DriverActionDistanceTolerance)) {
+							return retVal;
+						}
+						newds = EstimateAccelerationDistanceBeforeBrake(retVal, NextDrivingAction);
+						break;
+					case DrivingBehavior.Braking:
+						var brakingDistance = Driver.DriverData.AccelerationCurve.ComputeAccelerationDistance(v2,
+							NextDrivingAction.NextTargetSpeed);
+						if ((Driver.DataBus.Distance + ds).IsSmaller(NextDrivingAction.TriggerDistance - brakingDistance)) {
+							return retVal;
+						}
+						newds = (NextDrivingAction.TriggerDistance - brakingDistance) - Driver.DataBus.Distance;
+						break;
+					default:
 						return retVal;
-					}
-					newds = EstimateAccelerationDistanceBeforeBrake(retVal, NextDrivingAction);
-					break;
-				case DrivingBehavior.Braking:
-					var brakingDistance = Driver.DriverData.AccelerationCurve.ComputeAccelerationDistance(v2,
-						NextDrivingAction.NextTargetSpeed);
-					if ((Driver.DataBus.Distance + ds).IsSmaller(NextDrivingAction.TriggerDistance - brakingDistance)) {
+				}
+			}
+			if (CurrentDrivingMode == DrivingMode.DrivingModeBrake) {
+				switch (NextDrivingAction.Action) {
+					case DrivingBehavior.Coasting:
+						var brakingDistance = Driver.DriverData.AccelerationCurve.ComputeAccelerationDistance(v2,
+							NextDrivingAction.NextTargetSpeed);
+						if ((Driver.DataBus.Distance + ds).IsSmaller(NextDrivingAction.TriggerDistance - brakingDistance)) {
+							return retVal;
+						}
+						newds = (NextDrivingAction.TriggerDistance - brakingDistance) - Driver.DataBus.Distance;
+						break;
+					default:
 						return retVal;
-					}
-					newds = (NextDrivingAction.TriggerDistance - brakingDistance) - Driver.DataBus.Distance;
-					break;
-				default:
-					return retVal;
+				}
 			}
 			if (newds.IsEqual(0, 1e-3) || ds.IsEqual(newds, 1e-3.SI<Meter>())) {
 				return retVal;
diff --git a/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs b/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs
index 4731983b2c1c99bc60041a702ff45279f7cffc54..4c96b6609cc2980082a02407c5b6fa03f16d91ed 100644
--- a/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs
+++ b/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs
@@ -334,6 +334,21 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_uphill_3.vmod");
 		}
 
+		[TestMethod]
+		public void Truck_Decelerate_80_0_SlopeChangeDuringCoast()
+		{
+			var data = new string[] {
+				// <s>,<v>,<grad>,<stop>
+				"  0,  60, -1.15,     0",
+				" 70,  60, -1.85,     0",
+				"300,   0, -1.85,     2",
+			};
+
+			var cycle = SimpleDrivingCycles.CreateCycleData(data);
+			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_SlopeChangeDuringCoast.vmod")
+				.Run();
+		}
+
 		[TestMethod, Ignore]
 		public void Truck_Decelerate_80_0_uphill_5()
 		{