diff --git a/VectoCore/VectoCore/Models/SimulationComponent/IDriverActions.cs b/VectoCore/VectoCore/Models/SimulationComponent/IDriverActions.cs
index d76fbcf6059e766e6eeede5268112a54309af9f9..aba54b2fcfe60dfebdd8b95a091c82ed7bf4f687 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/IDriverActions.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/IDriverActions.cs
@@ -32,6 +32,7 @@
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.Simulation.DataBus;
+using TUGraz.VectoCore.Models.SimulationComponent.Impl;
 using DriverData = TUGraz.VectoCore.Models.SimulationComponent.Data.DriverData;
 
 namespace TUGraz.VectoCore.Models.SimulationComponent
@@ -83,12 +84,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
 		/// <param name="gradient"></param>
 		/// <param name="previousResponse"></param>
 		/// <param name="targetDistance"></param>
+		/// <param name="overrideAction"></param>
 		/// <returns>
 		/// * ResponseSuccess
 		/// * ResponseDrivingCycleDistanceExceeded: vehicle is at low speed, coasting would lead to stop before ds is reached.
 		/// </returns>
 		IResponse DrivingActionBrake(Second absTime, Meter ds, MeterPerSecond nextTargetSpeed, Radian gradient,
-			IResponse previousResponse = null, Meter targetDistance = null);
+			IResponse previousResponse = null, Meter targetDistance = null, DrivingAction? overrideAction = null);
 
 		/// <summary>
 		/// perform a 'roll driving action', i.e., the clutch is open and the vehicle rolls without motoring. adjust the acceleration 
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
index 054ad5684ae6f6cb12421b0b1af067c0a0dfde0f..fd02cf2bd42d33cd595ee6bdfc4da56284d6ab83 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
@@ -653,7 +653,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 				response = Driver.DrivingActionAccelerate(absTime, ds, 1.KMPHtoMeterPerSecond(), gradient);
 				if (response is ResponseUnderload) {
-					response = Driver.DrivingActionBrake(absTime, ds, 1.KMPHtoMeterPerSecond(), gradient, response);
+					response = Driver.DrivingActionBrake(absTime, ds, 1.KMPHtoMeterPerSecond(), gradient, response, overrideAction: DrivingAction.Accelerate);
 				}
 			} else {
 				response = Driver.DrivingActionBrake(
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs
index 34bfd9b2a0b0fd7f05b59f4b23d6c63927da96b3..6427763daa34ba797f3aa2d1ebc0dcddc63e681e 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs
@@ -478,10 +478,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			return response;
 		}
 
-		public IResponse DrivingActionBrake(Second absTime, Meter ds, MeterPerSecond nextTargetSpeed, Radian gradient,
-			IResponse previousResponse = null, Meter targetDistance = null)
+		public IResponse DrivingActionBrake(Second absTime, Meter ds, MeterPerSecond nextTargetSpeed, Radian gradient, IResponse previousResponse = null, Meter targetDistance = null, DrivingAction? overrideAction = null)
 		{
-			DrivingAction = DrivingAction.Brake;
+			DrivingAction = overrideAction ?? DrivingAction.Brake;
 			IterationStatistics.Increment(this, "Brake");
 			Log.Debug("DrivingAction Brake");