diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/AverageAccelerationTorquePreprocessor.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/AverageAccelerationTorquePreprocessor.cs
index 0af2f0592181e5e3c456e0817ac4ecaa9c233a22..72f7c10fa7be03085c86d6f8c60dafbb436fc97c 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/AverageAccelerationTorquePreprocessor.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/AverageAccelerationTorquePreprocessor.cs
@@ -39,7 +39,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl {
 					for (var tmpSpeed = engineSpeed; tmpSpeed < UpperLimit; tmpSpeed += speedStepSize) {
 						sum += VectoMath.Min(torque, fld.FullLoadStationaryTorque(tmpSpeed));
 					}
-					entries.Add(new KeyValuePair<Tuple<PerSecond, NewtonMeter>, NewtonMeter>(Tuple.Create(engineSpeed, torque), sum * speedStepSize / (UpperLimit - engineSpeed)));
+
+					var tmp = sum * speedStepSize / (UpperLimit - engineSpeed);
+					if (engineSpeed.IsEqual(UpperLimit, speedStepSize / 2)) {
+						tmp = 0.SI<NewtonMeter>();
+					}
+					entries.Add(new KeyValuePair<Tuple<PerSecond, NewtonMeter>, NewtonMeter>(Tuple.Create(engineSpeed, torque), tmp));
 				}
 			}
 
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/MaxCardanTorquePreprocessor.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/MaxCardanTorquePreprocessor.cs
index f7973e6889fb02c754cf1dea115d7cad16b1ac61..a11671e6f33fe29ffd81f494443eeb60f9ea4e46 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/MaxCardanTorquePreprocessor.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/MaxCardanTorquePreprocessor.cs
@@ -39,21 +39,27 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl {
 					engineSpeed += engineSpeedSteps) {
 					var maxTorque = Data.EngineData.FullLoadCurves[gearData.Key].FullLoadStationaryTorque(engineSpeed);
 					var vehicleSpeed = engineSpeed * powertrainRatioWOGearbox / gearData.Value.Ratio;
-					var first = TestContainer.VehiclePort.Initialize(vehicleSpeed, 0.SI<Radian>());
-					var delta = first.EngineTorqueDemandTotal - maxTorque;
-					var grad = SearchAlgorithm.Search(
-						0.SI<Radian>(), delta, 0.1.SI<Radian>(),
-						getYValue: r => {
-							return ((r as AbstractResponse).EngineTorqueDemandTotal - maxTorque);
-						},
-						evaluateFunction: g => {
-							return TestContainer.VehiclePort.Initialize(vehicleSpeed, g);
-						},
-						criterion: r => {
-							return ((r as AbstractResponse).EngineTorqueDemandTotal - maxTorque).Value();
-						}
-					);
+
+					var grad = VectoMath.InclinationToAngle(1);
 					var max = TestContainer.VehiclePort.Initialize(vehicleSpeed, grad);
+					if ((max.EngineTorqueDemandTotal - maxTorque).IsGreater(0)) {
+
+						var first = TestContainer.VehiclePort.Initialize(vehicleSpeed, 0.SI<Radian>());
+						var delta = first.EngineTorqueDemandTotal - maxTorque;
+						grad = SearchAlgorithm.Search(
+							0.SI<Radian>(), delta, 0.1.SI<Radian>(),
+							getYValue: r => {
+								return ((r as AbstractResponse).EngineTorqueDemandTotal - maxTorque);
+							},
+							evaluateFunction: g => {
+								return TestContainer.VehiclePort.Initialize(vehicleSpeed, g);
+							},
+							criterion: r => {
+								return ((r as AbstractResponse).EngineTorqueDemandTotal - maxTorque).Value();
+							}
+						);
+						max = TestContainer.VehiclePort.Initialize(vehicleSpeed, grad);
+					}
 					retVal[gearData.Key].Add(new KeyValuePair<PerSecond, NewtonMeter>(max.EngineSpeed, max.CardanTorque));
 				}
 			}
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/MaxGradabilityPreprocessor.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/MaxGradabilityPreprocessor.cs
index 6b8ed9f50f4b865cbb459f01b704d5be03082eb6..e71807b8ebceafd4c1adc00305e92c0ca2979819 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/MaxGradabilityPreprocessor.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/MaxGradabilityPreprocessor.cs
@@ -73,6 +73,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl {
 
 		private Radian SearchGradient(Vehicle vehicle, MeterPerSecond vehicleSpeed, NewtonMeter maxTorque)
 		{
+			var gradientMax = VectoMath.InclinationToAngle(1);
+			var responseMax = vehicle.Initialize(vehicleSpeed, gradientMax);
+			var deltaMax = responseMax.EnginePowerRequest / responseMax.EngineSpeed - maxTorque;
+			if (deltaMax.IsSmaller(0)) {
+				return gradientMax;
+			}
+
 			var gradient = VectoMath.InclinationToAngle(0);
 			var response = vehicle.Initialize(vehicleSpeed, gradient);
 
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/VelocitySpeedGearshiftPreprocessor.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/VelocitySpeedGearshiftPreprocessor.cs
index 8abe7156695902a4da022c9ed7900d169588e2a3..767400bf9cda3cc9ba65553db5fcd8995259b24e 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/VelocitySpeedGearshiftPreprocessor.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/VelocitySpeedGearshiftPreprocessor.cs
@@ -74,6 +74,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				var gearForSpeed = runData.GearboxData.Gears.FirstOrDefault(
 					x => (speed * ratio * x.Value.Ratio).IsBetween(
 						runData.EngineData.IdleSpeed, runData.EngineData.FullLoadCurves[0].RatedSpeed)).Key;
+				if (gearForSpeed == 0) {
+					continue;
+				}
 				for (var grad = MinGradient; grad <= MaxGradient; grad += GradientStep) {
 					var gradient = VectoMath.InclinationToAngle(grad / 100.0);
 					gearbox.Disengaged = false;