diff --git a/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs b/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs
index dd7059729ab6e7a7a390dace87c41a6f3a5fe169..7dc547529bc5df9fa432e22df7d6586c57c94832 100644
--- a/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs
@@ -343,6 +343,7 @@ namespace TUGraz.VectoCommon.InputData
 
 		double? PEV_TargetSpeedBrakeNorm { get; }
 
+		double? PEV_DownshiftSpeedFactor { get; }
 		double? PEV_DeRatingDownshiftSpeedFactor { get; }
 		double? PEV_DownshiftMinSpeedFactor { get; }
 	}
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
index 088fdba8cdc0d50797209aef35b52fac0fd3be6a..2fa86d137ff230f7cbd71073c435d8f3b53901e7 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
@@ -376,6 +376,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 		public Second ATLookAheadTime => null;
 		public double[][] ShiftSpeedsTCToLocked => null;
 		public double? PEV_TargetSpeedBrakeNorm => null;
+		public double? PEV_DownshiftSpeedFactor => null;
 		public double? PEV_DeRatingDownshiftSpeedFactor => null;
 		public double? PEV_DownshiftMinSpeedFactor => null;
 
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONTCUData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONTCUData.cs
index 29ff6cda9aeb3b6daf8122d743f8bce72ee6d87f..228a3ef5ba434a3ed712b585f3946722845c098b 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONTCUData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONTCUData.cs
@@ -265,6 +265,18 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			}
 		}
 
+		public double? PEV_DownshiftSpeedFactor
+		{
+			get
+			{
+				if (Body["PEV_DownshiftSpeedFactor"] != null) {
+					return Body.GetEx<double>("PEV_DownshiftSpeedFactor");
+				}
+
+				return null;
+			}
+		}
+
 		public double? PEV_DeRatingDownshiftSpeedFactor
 		{
 			get
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringGearshiftData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringGearshiftData.cs
index 9ad57f3e2e2ce0626148185739cf8be073b63e9f..81853fdae0177e39f420c62b6b29e20eb8e815e0 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringGearshiftData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringGearshiftData.cs
@@ -122,6 +122,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider
 		public Second ATLookAheadTime => null;
 		public double[][] ShiftSpeedsTCToLocked => null;
 		public double? PEV_TargetSpeedBrakeNorm => null;
+		public double? PEV_DownshiftSpeedFactor => null;
 		public double? PEV_DeRatingDownshiftSpeedFactor => null;
 		public double? PEV_DownshiftMinSpeedFactor => null;
 
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
index e803c63d34de47c33ee208a139368f048ad42e94..1fbf4be79bb8e028cb42e609b950babd6dc84dbc 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
@@ -780,6 +780,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				retVal.PEV_DeRatedDownshiftSpeedFactor = gsInputData.PEV_DeRatingDownshiftSpeedFactor.Value;
 			}
 
+			if (gsInputData.PEV_DownshiftSpeedFactor != null) {
+				retVal.PEV_DownshiftSpeedFactor = gsInputData.PEV_DownshiftSpeedFactor.Value;
+			}
+
 			if (gsInputData.PEV_TargetSpeedBrakeNorm != null) {
 				retVal.PEV_TargetSpeedBrakeNorm = gsInputData.PEV_TargetSpeedBrakeNorm.Value;
 			}
diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
index 29fe96ac780b689cc4362368a0862d732e964298..03f230129f9401a9a2bc2374cfe6606446b9d1ff 100644
--- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
+++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
@@ -607,7 +607,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 					var nMax = downshiftMaxSpeed ?? fullLoadCurve.NP80low;
 					var nMin = downshiftMinSpeed ?? 0.1 * fullLoadCurve.RatedSpeed;
 
-					downShift.AddRange(DownshiftLineDrive(fullLoadCurve, nMin, nMax));
+					downShift.AddRange(DownshiftLineDrive(fullLoadCurve, nMin, fullLoadCurve.NP80low));
 					downShift.AddRange(DownshiftLineDrag(fullLoadCurve, nMin, nMax));
 
 				}
diff --git a/VectoCore/VectoCore/Models/Simulation/Data/ShiftStrategyParameters.cs b/VectoCore/VectoCore/Models/Simulation/Data/ShiftStrategyParameters.cs
index ce834f26fe7a532ef4f631de4642ac15b6ac989a..528b9a6b8bdeace96abfe59152f8f194b143d301 100644
--- a/VectoCore/VectoCore/Models/Simulation/Data/ShiftStrategyParameters.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Data/ShiftStrategyParameters.cs
@@ -13,6 +13,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data {
 			PEV_DownshiftMinSpeedFactor = 0.1;
 			PEV_TargetSpeedBrakeNorm = 0.7;
 			PEV_DeRatedDownshiftSpeedFactor = 1;
+			PEV_DownshiftSpeedFactor = 1;
 		}
 
 		public MeterPerSecond StartVelocity { get; internal set; }
@@ -109,6 +110,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Data {
 		public double[] LoadStageThresoldsDown { get; set; }
 		public double[][] ShiftSpeedsTCToLocked { get; set; }
 		public double PEV_TargetSpeedBrakeNorm { get; set; }
+
+		public double PEV_DownshiftSpeedFactor { get; set; }
 		public double PEV_DeRatedDownshiftSpeedFactor { get; set; }
 		public double PEV_DownshiftMinSpeedFactor { get; set; }
 	}
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs
index 37bf788f4c5c8e7a5b7dbff507d135d96f3feedb..fc7c9065c0faad48f4a8c572d2534e06a7ddb0f4 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PEVAMTShiftStrategy.cs
@@ -120,8 +120,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			IList<ITransmissionInputData> gearboxGears, CombustionEngineData engineData, double axlegearRatio, Meter dynamicTyreRadius,
 			ElectricMotorData electricMotorData = null)
 		{
+			if (electricMotorData == null) {
+				throw new VectoException("ElectricMotorData is required to calculate Shift Polygon!");
+			}
+			var emFld = electricMotorData.EfficiencyData.VoltageLevels.First().FullLoadCurve;
 			return ComputeDeclarationShiftPolygon(i, gearboxGears, axlegearRatio, dynamicTyreRadius, electricMotorData,
-				null, shiftStrategyParameters.PEV_DownshiftMinSpeedFactor * electricMotorData.EfficiencyData.VoltageLevels.First().FullLoadCurve.RatedSpeed);
+				shiftStrategyParameters.PEV_DownshiftSpeedFactor.LimitTo(0, 1) * emFld.RatedSpeed, shiftStrategyParameters.PEV_DownshiftMinSpeedFactor * emFld.RatedSpeed);
 		}