diff --git a/VectoCommon/VectoCommon/Models/OperatingPoint.cs b/VectoCommon/VectoCommon/Models/OperatingPoint.cs
index 639ce72bbfeb3f9b971572b46e8aeec07692759f..884afd5d7ac3da7244e05adc78bc5fe4dea8c38c 100644
--- a/VectoCommon/VectoCommon/Models/OperatingPoint.cs
+++ b/VectoCommon/VectoCommon/Models/OperatingPoint.cs
@@ -45,5 +45,14 @@ namespace TUGraz.VectoCommon.Models
 		{
 			return string.Format("a: {0}, dt: {1}, ds: {2}", Acceleration, SimulationInterval, SimulationDistance);
 		}
+
+		public OperatingPoint Clone()
+		{
+			return new OperatingPoint() {
+				Acceleration = Acceleration,
+				SimulationDistance = SimulationDistance,
+				SimulationInterval = SimulationInterval
+			};
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs
index e81b35851d9f756f2954e1b2fab2854eed91c707..2bb060fe7225b78b0d3c9a2987454ee75b359404 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Driver.cs
@@ -699,31 +699,32 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		private OperatingPoint LimitAccelerationByDriverModel(OperatingPoint operatingPoint,
 			LimitationMode limits)
 		{
+			var retVal = operatingPoint.Clone();
 			var limitApplied = false;
-			var originalAcceleration = operatingPoint.Acceleration;
+			
 			//if (((limits & LimitationMode.LimitDecelerationLookahead) != 0) &&
 			//	operatingPoint.Acceleration < DriverData.LookAheadCoasting.Deceleration) {
 			//	operatingPoint.Acceleration = DriverData.LookAheadCoasting.Deceleration;
 			//	limitApplied = true;
 			//}
 			var accelerationLimits = DriverData.AccelerationCurve.Lookup(DataBus.VehicleSpeed);
-			if (operatingPoint.Acceleration > accelerationLimits.Acceleration) {
-				operatingPoint.Acceleration = accelerationLimits.Acceleration;
+			if (limits != LimitationMode.NoLimitation && operatingPoint.Acceleration > accelerationLimits.Acceleration) {
+				retVal.Acceleration = accelerationLimits.Acceleration;
 				limitApplied = true;
 			}
 			if (((limits & LimitationMode.LimitDecelerationDriver) != 0) &&
 				operatingPoint.Acceleration < accelerationLimits.Deceleration) {
-				operatingPoint.Acceleration = accelerationLimits.Deceleration;
+				retVal.Acceleration = accelerationLimits.Deceleration;
 				limitApplied = true;
 			}
 			if (limitApplied) {
-				operatingPoint.SimulationInterval =
-					ComputeTimeInterval(operatingPoint.Acceleration, operatingPoint.SimulationDistance)
+				retVal.SimulationInterval =
+					ComputeTimeInterval(retVal.Acceleration, retVal.SimulationDistance)
 						.SimulationInterval;
-				Log.Debug("Limiting acceleration from {0} to {1}, dt: {2}", originalAcceleration,
-					operatingPoint.Acceleration, operatingPoint.SimulationInterval);
+				Log.Debug("Limiting acceleration from {0} to {1}, dt: {2}", operatingPoint.Acceleration,
+					retVal.Acceleration, retVal.SimulationInterval);
 			}
-			return operatingPoint;
+			return retVal;
 		}
 
 		/// <summary>