diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs
index fa19858e24c4955f4a00f9e4080e6dcea0484828..79ed9f108a9aca7b6b6f03a73c7ba9568c565538 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs
@@ -196,12 +196,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 							// search again for operating point, transmission may have shifted inbetween
 							nextOperatingPoint = SearchOperatingPoint(absTime, ds, gradient, operatingPoint.Acceleration,
 								response);
-							limitedOperatingPoint = LimitAccelerationByDriverModel(nextOperatingPoint,
-								LimitationMode.LimitDecelerationDriver);
-							DriverAcceleration = limitedOperatingPoint.Acceleration;
-							retVal = NextComponent.Request(absTime, limitedOperatingPoint.SimulationInterval,
-								limitedOperatingPoint.Acceleration,
-								gradient);
+							DriverAcceleration = nextOperatingPoint.Acceleration;
+							retVal = NextComponent.Request(absTime, nextOperatingPoint.SimulationInterval,
+								nextOperatingPoint.Acceleration, gradient);
 						} else {
 							if (absTime > 0 && DataBus.VehicleStopped) {
 								Log.Info(
@@ -526,6 +523,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 						operatingPoint = SearchBrakingPower(absTime, operatingPoint.SimulationDistance, gradient,
 							operatingPoint.Acceleration, response);
 						DriverAcceleration = operatingPoint.Acceleration;
+						if (DataBus.BrakePower.IsSmaller(0)) {
+							DataBus.BrakePower = 0.SI<Watt>();
+
+							operatingPoint = SearchOperatingPoint(absTime, ds, gradient, 0.SI<MeterPerSquareSecond>(), r);
+						}
 						retVal = NextComponent.Request(absTime, operatingPoint.SimulationInterval,
 							operatingPoint.Acceleration, gradient);
 					} else {