diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategy.cs
index a10c53c0e6afcf1c75f8e27fb8b5341f07a99415..40e1c4a4340fb87f245341ec4d6c2d5a012052b3 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategy.cs
@@ -194,7 +194,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 					nextInAngularSpeed = outAngularVelocity * ModelData.Gears[gear + 1].Ratio;
 					nextInTorque = outTorque / ModelData.Gears[gear + 1].Ratio;
 				}
-				if (!IsBelowDownShiftCurve(gear + 1, nextInTorque, nextInAngularSpeed)) {
+				var acc = EstimateAccelerationForGear(gear + 1, outAngularVelocity);
+				if ((acc > 0 || _gearbox.TCLocked) && !IsBelowDownShiftCurve(gear + 1, nextInTorque, nextInAngularSpeed)) {
 					Log.Debug("engine speed would be above max speed / rated speed - shift up");
 					Upshift(absTime, gear);
 					return true;
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs
index fbca2c4d51a3b7f4f5986ffac1ab038897342df2..e26ffc6ceb3ef9f70d85658acd4b8d8e5394e0a2 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs
@@ -271,6 +271,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 					absTime, dt, outAngularVelocity, engineSpeed,
 					x => x.DeltaFullLoad.IsSmaller(0),
 					x => VectoMath.Abs(DataBus.EngineSpeed - x.EngineSpeed).Value());
+				if (tqOperatingPoint == null) {
+					return null;
+				}
 				tqOperatingPoint.Creeping = true;
 				return tqOperatingPoint;
 			}