diff --git a/VectoCore/VectoCoreTest/Reports/ModDataTest.cs b/VectoCore/VectoCoreTest/Reports/ModDataTest.cs
index 6b34b38543cb10ade68cf561347b4a7c83aa4159..9f65fed73e28ad85281d0e8e48641b4df8abc470 100644
--- a/VectoCore/VectoCoreTest/Reports/ModDataTest.cs
+++ b/VectoCore/VectoCoreTest/Reports/ModDataTest.cs
@@ -80,7 +80,7 @@ namespace TUGraz.VectoCore.Tests.Reports
 		{
 			var rundata = new VectoRunData() {
 				JobName = "sumDataTest"
-            }; 
+			};
 			var modData = new ModalDataContainer(rundata, null, null);
 			var initalSpeed = initialSpeedVal.KMPHtoMeterPerSecond();
 			var speed = initalSpeed;
@@ -154,6 +154,44 @@ namespace TUGraz.VectoCore.Tests.Reports
 			RunSimulation(jobName, ExecutionMode.Engineering);
 		}
 
+		[Category("LongRunning")]
+		[TestCase]
+		public void Test_P1_PCC_ESSOn_EssOff()
+		{
+			var jobName = @"TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_s2c0_rep_Payload.vecto";
+			var fileWriter = new FileOutputWriter(jobName);
+			var sumData = new SummaryDataContainer(fileWriter);
+			var jobContainer = new JobContainer(sumData);
+			var inputData = JSONInputDataFactory.ReadJsonJob(jobName);
+			var runsFactory = new SimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter) { WriteModalResults = false, Validate = false };
+			jobContainer.AddRuns(runsFactory);
+
+			var run = runsFactory.SimulationRuns().First();
+			var modESSon = (run.GetContainer().ModalData as ModalDataContainer).Data;
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+
+			jobName = @"TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_s2c0_rep_Payload_ESSoff.vecto";
+			fileWriter = new FileOutputWriter(jobName);
+			inputData = JSONInputDataFactory.ReadJsonJob(jobName);
+			runsFactory = new SimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter) { WriteModalResults = false, Validate = false };
+			jobContainer.AddRuns(runsFactory);
+
+			run = runsFactory.SimulationRuns().First();
+			var modESSoff = (run.GetContainer().ModalData as ModalDataContainer).Data;
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+
+			// ICEOn is sometimes 0, therefore the sum must be lower than the row count
+			Assert.That(modESSon.Sum(r => (bool)r[ModalResultField.ICEOn.GetName()] ? 1 : 0) < modESSon.Rows.Count);
+
+			// ICEOn must always be 1, therefore the sum should equal the row count
+			Assert.That(modESSoff.Sum(r => (bool)r[ModalResultField.ICEOn.GetName()] ? 1 : 0) == modESSoff.Rows.Count);
+		}
+
+
+
+
 
 		[TestCase(@"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto")]
 		public void TestVSUM_VMOD_FormatDecl(string jobName)
@@ -172,7 +210,7 @@ namespace TUGraz.VectoCore.Tests.Reports
 		TestCase(@"TestData\Integration\EngineeringMode\Class9_RigidTruck_6x2_PTO\Class9_RigidTruck_ENG_PTO.vecto"),]
 		public void TestFullCycleModDataIntegrityMT(string jobName)
 		{
-			RunSimulation(jobName, ExecutionMode.Engineering);	
+			RunSimulation(jobName, ExecutionMode.Engineering);
 		}
 
 		[TestCase(@"TestData\XML\XMLReaderDeclaration\Tractor_4x2_vehicle-class-5_5_t_0.xml", 1, 1.0),
@@ -225,7 +263,7 @@ namespace TUGraz.VectoCore.Tests.Reports
 			Assert.IsTrue(min2.IsEqual(expectedTractionInterruption, 0.1), "minimum traction interruption time: {0}", min);
 			Assert.IsTrue(max2.IsEqual(expectedTractionInterruption, 0.1), "maximum traction interruption time: {0}", max2);
 
-			
+
 		}
 
 		private Dictionary<Second, Second> ExtractTractionInterruptionTimes(ModalResults modData)
@@ -248,7 +286,7 @@ namespace TUGraz.VectoCore.Tests.Reports
 				}
 				if (gear != 0 && tracStart != null) {
 					var tracEnd = absTime - dt / 2.0;
-					retVal[absTime] =(tracEnd - tracStart);
+					retVal[absTime] = (tracEnd - tracStart);
 					tracStart = null;
 				}
 			}
@@ -286,7 +324,7 @@ namespace TUGraz.VectoCore.Tests.Reports
 					Assert.AreEqual(2, numParts.Length, $"Line {lineCnt}: column {i}: value {parts[i]}");
 					Assert.IsTrue(numParts[0].Length > 0);
 					Assert.AreEqual(4, numParts[1].Length);
-				} 
+				}
 			}
 		}
 
@@ -357,11 +395,11 @@ namespace TUGraz.VectoCore.Tests.Reports
 			var engInput = inputData as IEngineeringInputDataProvider;
 			FuelConsumptionMap fcMap = null;
 			if (engInput != null) {
-				 fcMap = FuelConsumptionMapReader.Create(engInput.JobInputData.Vehicle
-					.Components.EngineInputData.EngineModes.First().Fuels.First().FuelConsumptionMap);
+				fcMap = FuelConsumptionMapReader.Create(engInput.JobInputData.Vehicle
+				   .Components.EngineInputData.EngineModes.First().Fuels.First().FuelConsumptionMap);
 			}
 			var vtpInput = inputData as IVTPEngineeringInputDataProvider;
-			if (vtpInput != null ) {
+			if (vtpInput != null) {
 				fcMap = FuelConsumptionMapReader.Create(vtpInput.JobInputData.Vehicle
 					.Components.EngineInputData.EngineModes.First().Fuels.First().FuelConsumptionMap);
 			}
@@ -422,7 +460,7 @@ namespace TUGraz.VectoCore.Tests.Reports
 				var eAxlLoss = ((ConvertedSI)row[SummaryDataContainer.Fields.E_AXL_LOSS]);
 				var eBrakeLoss = ((ConvertedSI)row[SummaryDataContainer.Fields.E_BRAKE]);
 				var eVehInertia = ((ConvertedSI)row[SummaryDataContainer.Fields.E_VEHICLE_INERTIA]);
-				var eWheel = !distanceBased ? ((ConvertedSI)row[SummaryDataContainer.Fields.E_WHEEL]) : null ;
+				var eWheel = !distanceBased ? ((ConvertedSI)row[SummaryDataContainer.Fields.E_WHEEL]) : null;
 				var eAir = ((ConvertedSI)row[SummaryDataContainer.Fields.E_AIR]);
 				var eRoll = ((ConvertedSI)row[SummaryDataContainer.Fields.E_ROLL]);
 				var eGrad = ((ConvertedSI)row[SummaryDataContainer.Fields.E_GRAD]);
@@ -434,7 +472,7 @@ namespace TUGraz.VectoCore.Tests.Reports
 					? 0.0
 					: ((ConvertedSI)row[string.Format(SummaryDataContainer.Fields.FCFINAL_LiterPer100M3KM, "")]);
 				var fcPerLoad = loadingValue > 0 ? ((ConvertedSI)row[string.Format(SummaryDataContainer.Fields.FCFINAL_LITERPER100TKM, "")]) : 0.0;
-				var co2PerKm = distanceBased? ((ConvertedSI)row[SummaryDataContainer.Fields.CO2_KM]) : null;
+				var co2PerKm = distanceBased ? ((ConvertedSI)row[SummaryDataContainer.Fields.CO2_KM]) : null;
 				var co2PerVolume = mode == ExecutionMode.Engineering ? 0.0 : ((ConvertedSI)row[SummaryDataContainer.Fields.CO2_M3KM]);
 				var co2PerLoad = loadingValue > 0 ? ((ConvertedSI)row[SummaryDataContainer.Fields.CO2_TKM]) : 0.0;
 
@@ -527,7 +565,7 @@ namespace TUGraz.VectoCore.Tests.Reports
 				// check fuel consumption interpolation
 				var fuelConsumption = (SI)row[ModalResultField.FCMap.GetName()];
 				Assert.AreEqual(fuelConsumption.Value(),
-					consumptionMap.GetFuelConsumption(tqEngFcmap, nEngFcMap,true).Value.Value(), 1E-3, "time: {0}  distance: {1}",
+					consumptionMap.GetFuelConsumption(tqEngFcmap, nEngFcMap, true).Value.Value(), 1E-3, "time: {0}  distance: {1}",
 					time, distance);
 
 				// check P_eng_FCmap = T_eng_fcmap * n_eng
@@ -561,7 +599,7 @@ namespace TUGraz.VectoCore.Tests.Reports
 				var pAux =
 					(Watt)(row[ModalResultField.P_aux_mech.GetName()] != DBNull.Value ? row[ModalResultField.P_aux_mech.GetName()] : 0.SI<Watt>());
 				var pBrakeLoss = distanceBased ? (Watt)row[ModalResultField.P_brake_loss.GetName()] : 0.SI<Watt>();
-				var pBrakeIn =  distanceBased ? (Watt)row[ModalResultField.P_brake_in.GetName()] : pWheelIn;
+				var pBrakeIn = distanceBased ? (Watt)row[ModalResultField.P_brake_in.GetName()] : pWheelIn;
 
 				var pWheelInertia = distanceBased ? (Watt)row[ModalResultField.P_wheel_inertia.GetName()] : 0.SI<Watt>();
 				var pPTOconsumer = ptoConsumerColumn == null || row[ptoConsumerColumn.ColumnName] is DBNull
@@ -585,7 +623,7 @@ namespace TUGraz.VectoCore.Tests.Reports
 				}
 				Assert.AreEqual(pBrakeIn.Value(), (pWheelIn + pBrakeLoss).Value(), 1E-3, "time: {0}  distance: {1}", time,
 						distance);
-				
+
 				Assert.AreEqual(pAxleIn.Value(), (pBrakeIn + pLossAxle).Value(), 1E-3, "time: {0}  distance: {1}", time, distance);
 
 				Assert.AreEqual(pRetIn.Value(), (pAxleIn + pLossRet).Value(), 1E-3, "time: {0}  distance: {1}", time, distance);
@@ -747,15 +785,15 @@ namespace TUGraz.VectoCore.Tests.Reports
 
 				var pClutchOut = row[ModalResultField.P_clutch_out.GetName()];
 				//if (pClutchOut != DBNull.Value) {
-					Assert.AreEqual(pGbxIn.Value(), (pClutchOut as Watt).Value(), 1E-3, "time: {0}  distance: {1}", time, distance);
-					var pP1Out = row[p1OutColumn] as Watt;
-					Assert.AreEqual(pP1Out.Value(), (pClutchOut as Watt + pClutchLoss).Value(), 1E-3, "time: {0}  distance: {1}",
-						time, distance);
+				Assert.AreEqual(pGbxIn.Value(), (pClutchOut as Watt).Value(), 1E-3, "time: {0}  distance: {1}", time, distance);
+				var pP1Out = row[p1OutColumn] as Watt;
+				Assert.AreEqual(pP1Out.Value(), (pClutchOut as Watt + pClutchLoss).Value(), 1E-3, "time: {0}  distance: {1}",
+					time, distance);
 
-					var pP1Loss = row[p1LossColumn] as Watt;
-					var pP1Mech = row[p1MechColumn] as Watt;
-					var pP1In = row[p1InColumn] as Watt;
-					var pP1El = row[p1ElColumn] as Watt;
+				var pP1Loss = row[p1LossColumn] as Watt;
+				var pP1Mech = row[p1MechColumn] as Watt;
+				var pP1In = row[p1InColumn] as Watt;
+				var pP1El = row[p1ElColumn] as Watt;
 				Assert.AreEqual(pP1In.Value(), (pP1Out + pP1Mech).Value(), 1E-3, "time: {0}  distance: {1}",
 					time, distance);
 
diff --git a/VectoCore/VectoCoreTest/TestData/Integration/EngineeringMode/P1_Group5_AMT/P1_Group5_ESSoff.vveh b/VectoCore/VectoCoreTest/TestData/Integration/EngineeringMode/P1_Group5_AMT/P1_Group5_ESSoff.vveh
new file mode 100644
index 0000000000000000000000000000000000000000..5ef57a2c37f1edbaa19aa85413074c5002a99686
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Integration/EngineeringMode/P1_Group5_AMT/P1_Group5_ESSoff.vveh
@@ -0,0 +1,112 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2021-12-21T10:13:15.9000372Z",
+    "AppVersion": "3",
+    "FileVersion": 10
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "VehCat": "Tractor",
+    "LegislativeClass": "Unknown",
+    "CurbWeight": 7747.0,
+    "CurbWeightExtra": 7500.0,
+    "MassMax": 18.0,
+    "Loading": 19300.0,
+    "rdyn": 492.0,
+    "CdCorrMode": "CdofVdecl",
+    "CdCorrFile": "",
+    "AxleConfig": {
+      "Type": "4x2",
+      "Axles": [
+        {
+          "Inertia": 14.9,
+          "Wheels": "315/70 R22.5",
+          "AxleWeightShare": 0.2,
+          "TwinTyres": false,
+          "RRCISO": 0.0052,
+          "FzISO": 33350.0,
+          "Type": "VehicleNonDriven"
+        },
+        {
+          "Inertia": 14.9,
+          "Wheels": "315/70 R22.5",
+          "AxleWeightShare": 0.25,
+          "TwinTyres": true,
+          "RRCISO": 0.0057,
+          "FzISO": 33350.0,
+          "Type": "VehicleDriven"
+        },
+        {
+          "Inertia": 19.2,
+          "Wheels": "385/65 R22.5",
+          "AxleWeightShare": 0.18333,
+          "TwinTyres": false,
+          "RRCISO": 0.0055,
+          "FzISO": 41690.0,
+          "Type": "Trailer"
+        },
+        {
+          "Inertia": 19.2,
+          "Wheels": "385/65 R22.5",
+          "AxleWeightShare": 0.18333,
+          "TwinTyres": false,
+          "RRCISO": 0.0055,
+          "FzISO": 41690.0,
+          "Type": "Trailer"
+        },
+        {
+          "Inertia": 19.2,
+          "Wheels": "385/65 R22.5",
+          "AxleWeightShare": 0.18334,
+          "TwinTyres": false,
+          "RRCISO": 0.0055,
+          "FzISO": 41690.0,
+          "Type": "Trailer"
+        }
+      ]
+    },
+    "EngineStopStart": false,
+    "EcoRoll": "None",
+    "PredictiveCruiseControl": "Option_1_2_3",
+    "ATEcoRollReleaseLockupClutch": false,
+    "CdA": 5.62,
+    "VehicleHeight": 4.0,
+    "IdlingSpeed": 550.0,
+    "Retarder": {
+      "Type": "secondary",
+      "Ratio": 1.0,
+      "File": "Default.vrlm"
+    },
+    "Angledrive": {
+      "Type": "None",
+      "Ratio": 0.0,
+      "LossMap": ""
+    },
+    "PTO": {
+      "Type": "None",
+      "LossMap": "",
+      "Cycle": "",
+      "CycleDriving": ""
+    },
+    "TorqueLimits": {},
+    "InitialSoC": 50.0,
+    "PowertrainConfiguration": "ParallelHybrid",
+    "ElectricMotors": [
+      {
+        "Count": 1,
+        "Ratio": 1.0,
+        "Position": "P1",
+        "MotorFile": "P1_Group5_EM.vem",
+        "MechanicalEfficiency": 1.0
+      }
+    ],
+    "Batteries": [
+      {
+        "NumPacks": 1,
+        "BatteryFile": "P1_Group5_REESS.vreess",
+        "StreamId": 0
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Integration/EngineeringMode/P1_Group5_AMT/P1_Group5_s2c0_rep_Payload_ESSoff.vecto b/VectoCore/VectoCoreTest/TestData/Integration/EngineeringMode/P1_Group5_AMT/P1_Group5_s2c0_rep_Payload_ESSoff.vecto
new file mode 100644
index 0000000000000000000000000000000000000000..66b81dca02520e869b90827ebe0abe1ef272a463
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Integration/EngineeringMode/P1_Group5_AMT/P1_Group5_s2c0_rep_Payload_ESSoff.vecto
@@ -0,0 +1,53 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2021-12-21T10:13:17.1134933Z",
+    "AppVersion": "3",
+    "FileVersion": 8
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "EngineOnlyMode": false,
+    "VehicleFile": "P1_Group5_ESSoff.vveh",
+    "EngineFile": "P1_Group5_12.7l.veng",
+    "GearboxFile": "AMT_12.vgbx",
+    "TCU": "AMT_12.vgbx",
+    "HybridStrategyParams": "HEV_Parameter.vhctl",
+    "Padd": 4293.0,
+    "Paux_ICEOff_Driving": 0.0,
+    "Paux_ICEOff_Standstill": 0.0,
+    "Padd_electric": 0.0,
+    "VACC": "Truck.vacc",
+    "EngineStopStartAtVehicleStopThreshold": 2.0,
+    "EngineStopStartMaxOffTimespan": 120.0,
+    "EngineStopStartUtilityFactor": 0.8,
+    "EngineStopStartUtilityFactorDriving": 0.8,
+    "EcoRollMinSpeed": 0.0,
+    "EcoRollActivationDelay": 0.0,
+    "EcoRollUnderspeedThreshold": 0.0,
+    "EcoRollMaxAcceleration": 0.0,
+    "PCCEnableSpeed": 80.0,
+    "PCCMinSpeed": 50.0,
+    "PCCUnderspeed": 8.0,
+    "PCCOverSpeed": 5.0,
+    "PCCPreviewDistanceUC1": 1500.0,
+    "PCCPreviewDistanceUC2": 1000.0,
+    "LAC": {
+      "Enabled": true,
+      "PreviewDistanceFactor": 10.0,
+      "DF_offset": 2.5,
+      "DF_scaling": 1.5,
+      "DF_targetSpeedLookup": "",
+      "Df_velocityDropLookup": "",
+      "MinSpeed": 50.0
+    },
+    "OverSpeedEcoRoll": {
+      "Mode": "Overspeed",
+      "MinSpeed": 50.0,
+      "OverSpeed": 2.5
+    },
+    "Cycles": [
+      "LongHaul_mod5_id_2.vdri"
+    ]
+  }
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
index 39411f874e7cbbfebc12390f23d1016627bda8b7..d809918ed1d5b860629ac4c56a00e871db74be55 100644
--- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
@@ -3586,12 +3586,18 @@
     <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_EM.vem">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_ESSoff.vveh">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
     <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_REESS.vreess">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_s2c0_rep_Payload.vecto">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_s2c0_rep_Payload_ESSoff.vecto">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
     <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\REESS_Internal_Resistance.vbatr">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>