diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs
index 7f87ca2ba0d3cf4b69f69e7099fefabfd310d74e..03dbe29bd554fc0eb5ddec18a6902c2390c2dd28 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs
@@ -203,13 +203,23 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 								limitedOperatingPoint.Acceleration,
 								gradient);
 						} else {
-							Log.Info(
-								"Operating point with limited acceleration resulted in an overload! trying again with original acceleration {0}",
-								nextOperatingPoint.Acceleration);
-							DriverAcceleration = nextOperatingPoint.Acceleration;
-							retVal = NextComponent.Request(absTime, nextOperatingPoint.SimulationInterval,
-								nextOperatingPoint.Acceleration,
-								gradient);
+							if (absTime > 0 && DataBus.VehicleStopped) {
+								Log.Info(
+									"Operating point with limited acceleration resulted in an overload! Vehicle stopped! trying HALT action {0}",
+									nextOperatingPoint.Acceleration);
+								DataBus.BrakePower = 1.SI<Watt>();
+								retVal = DrivingActionHalt(absTime, nextOperatingPoint.SimulationInterval, 0.SI<MeterPerSecond>(), gradient);
+								ds = 0.SI<Meter>();
+								//retVal.Acceleration = 0.SI<MeterPerSquareSecond>();
+							} else {
+								Log.Info(
+									"Operating point with limited acceleration resulted in an overload! trying again with original acceleration {0}",
+									nextOperatingPoint.Acceleration);
+								DriverAcceleration = nextOperatingPoint.Acceleration;
+								retVal = NextComponent.Request(absTime, nextOperatingPoint.SimulationInterval,
+									nextOperatingPoint.Acceleration,
+									gradient);
+							}
 						}
 						retVal.Switch().
 							Case<ResponseSuccess>(() => operatingPoint = nextOperatingPoint).
@@ -238,6 +248,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 			retVal.Acceleration = operatingPoint.Acceleration;
 			retVal.SimulationInterval = operatingPoint.SimulationInterval;
+			retVal.SimulationDistance = ds;
 			retVal.OperatingPoint = operatingPoint;
 
 			return retVal;
@@ -282,6 +293,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 						throw new UnexpectedResponseException("DrivingAction Roll: Gearshift during Roll action.",
 							retVal);
 					});
+
 			return retVal;
 		}
 
@@ -356,6 +368,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				limitedOperatingPoint.Acceleration, gradient);
 
 			response.SimulationInterval = limitedOperatingPoint.SimulationInterval;
+			response.SimulationDistance = ds;
 			response.Acceleration = limitedOperatingPoint.Acceleration;
 			response.OperatingPoint = limitedOperatingPoint;
 
@@ -453,6 +466,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				CurrentState.Response = retVal;
 				retVal.Acceleration = operatingPoint.Acceleration;
 				retVal.SimulationInterval = operatingPoint.SimulationInterval;
+				retVal.SimulationDistance = ds;
 				retVal.OperatingPoint = operatingPoint;
 				return retVal;
 			}
@@ -515,6 +529,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			CurrentState.Response = retVal;
 			retVal.Acceleration = operatingPoint.Acceleration;
 			retVal.SimulationInterval = operatingPoint.SimulationInterval;
+			retVal.SimulationDistance = ds;
 			retVal.OperatingPoint = operatingPoint;
 
 			return retVal;
@@ -648,26 +663,26 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 						return actionRoll ? r.GearboxPowerRequest : (coastingOrRoll ? r.DeltaDragLoad : r.DeltaFullLoad);
 					},
 					evaluateFunction:
-					acc => {
-						// calculate new time interval only when vehiclespeed and acceleration are != 0
-						// else: use same timeinterval as before.
-						if (!(acc.IsEqual(0) && DataBus.VehicleSpeed.IsEqual(0))) {
-							var tmp = ComputeTimeInterval(acc, ds);
-							if (tmp.SimulationInterval.IsEqual(0.SI<Second>(), 1e-9.SI<Second>())) {
-								throw new VectoSearchAbortedException(
-									"next TimeInterval is 0. a: {0}, v: {1}, dt: {2}", acc,
-									DataBus.VehicleSpeed, tmp.SimulationInterval);
+						acc => {
+							// calculate new time interval only when vehiclespeed and acceleration are != 0
+							// else: use same timeinterval as before.
+							if (!(acc.IsEqual(0) && DataBus.VehicleSpeed.IsEqual(0))) {
+								var tmp = ComputeTimeInterval(acc, ds);
+								if (tmp.SimulationInterval.IsEqual(0.SI<Second>(), 1e-9.SI<Second>())) {
+									throw new VectoSearchAbortedException(
+										"next TimeInterval is 0. a: {0}, v: {1}, dt: {2}", acc,
+										DataBus.VehicleSpeed, tmp.SimulationInterval);
+								}
+								retVal.Acceleration = tmp.Acceleration;
+								retVal.SimulationInterval = tmp.SimulationInterval;
+								retVal.SimulationDistance = tmp.SimulationDistance;
 							}
-							retVal.Acceleration = tmp.Acceleration;
-							retVal.SimulationInterval = tmp.SimulationInterval;
-							retVal.SimulationDistance = tmp.SimulationDistance;
-						}
-						IterationStatistics.Increment(this, "SearchOperatingPoint");
-						DriverAcceleration = acc;
-						var response = NextComponent.Request(absTime, retVal.SimulationInterval, acc, gradient, true);
-						response.OperatingPoint = retVal;
-						return response;
-					},
+							IterationStatistics.Increment(this, "SearchOperatingPoint");
+							DriverAcceleration = acc;
+							var response = NextComponent.Request(absTime, retVal.SimulationInterval, acc, gradient, true);
+							response.OperatingPoint = retVal;
+							return response;
+						},
 					criterion: response => {
 						var r = (ResponseDryRun)response;
 						delta = actionRoll
@@ -676,14 +691,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 						return delta.Value();
 					},
 					abortCriterion:
-					(response, cnt) => {
-						var r = (ResponseDryRun)response;
-						if (r == null) {
-							return false;
-						}
+						(response, cnt) => {
+							var r = (ResponseDryRun)response;
+							if (r == null) {
+								return false;
+							}
 
-						return !actionRoll && !ds.IsEqual(r.OperatingPoint.SimulationDistance);
-					});
+							return !actionRoll && !ds.IsEqual(r.OperatingPoint.SimulationDistance);
+						});
 			} catch (VectoSearchAbortedException) {
 				// search aborted, try to go ahead with the last acceleration
 			} catch (Exception) {