diff --git a/Documentation/BusAuxCases with ESS_Formatted.xlsx b/Documentation/BusAuxCases with ESS_Formatted.xlsx
index 72cc0c8a566ba08c819942d25ed62c9d519ac9eb..6bdc87d0dc23f53c90b0c5e001b9061f2bb13a02 100644
Binary files a/Documentation/BusAuxCases with ESS_Formatted.xlsx and b/Documentation/BusAuxCases with ESS_Formatted.xlsx differ
diff --git a/VectoCore/VectoCoreTest/Reports/ModDataPostprocessingTest.cs b/VectoCore/VectoCoreTest/Reports/ModDataPostprocessingTest.cs
index 30cc2e59e57847f4e98b6a57a65f68d62c2ebc87..348323577e6277cf48d3faad4a86112386c3b6e5 100644
--- a/VectoCore/VectoCoreTest/Reports/ModDataPostprocessingTest.cs
+++ b/VectoCore/VectoCoreTest/Reports/ModDataPostprocessingTest.cs
@@ -64,9 +64,9 @@ namespace TUGraz.VectoCore.Tests.Reports
 			// constant driving
 			var n_ice = 800.RPMtoRad();
 			var t_ice = 400.SI<NewtonMeter>();
-			var T1 = 0.SI<Second>();
-			var T2 = 0.SI<Second>();
-			var T3 = 0.SI<Second>();
+			var T1 = 0.SI<Second>(); // 50.135121407888441 ["s"]
+			var T2 = 0.SI<Second>(); // 51.171787824561704 ["s"]
+			var T3 = 0.SI<Second>(); // 50.195047986970792 ["s"]
 
 			var P_off = 300.SI<Watt>();
 			var P_on = 900.SI<Watt>();
@@ -221,9 +221,9 @@ namespace TUGraz.VectoCore.Tests.Reports
 			// constant driving
 			var n_ice = 800.RPMtoRad();
 			var t_ice = 400.SI<NewtonMeter>();
-			var T1 = 0.SI<Second>();
-			var T2 = 0.SI<Second>();
-			var T3 = 0.SI<Second>();
+			var T1 = 0.SI<Second>(); // 50.135121407888441 ["s"]
+			var T2 = 0.SI<Second>(); // 51.171787824561704 ["s"]
+			var T3 = 0.SI<Second>(); // 50.195047986970792 ["s"]
 
 			var P_off = 300.SI<Watt>();
 			var P_on = 900.SI<Watt>();
@@ -355,6 +355,169 @@ namespace TUGraz.VectoCore.Tests.Reports
 			Assert.AreEqual(fcModSum + fcEssDrivingOff + fcEssDrivingOn, f.FcFinal.Value(), 1e-6);
 		}
 
+		[TestCase()]
+		public void TestAuxESSEngineStart_ModDataCorrection()
+		{
+			var runData = GetRunData();
+			runData.JobName = new StackTrace().GetFrame(0).GetMethod().Name;
+			var writer = new FileOutputWriter(".");
+			var modData = new ModalDataContainer(runData, writer, null) {
+				WriteModalResults = true
+			};
+
+			var fuel = runData.EngineData.Fuels[0];
+
+			var absTime = 0.SI<Second>();
+			var rnd = new Random(210629);
+			Second dt;
+
+			var i = 0;
+			// constant driving
+			var n_ice = 800.RPMtoRad();
+			var t_ice = 400.SI<NewtonMeter>();
+			var T1 = 0.SI<Second>(); // 50.135121407888441 ["s"]
+			var T2 = 0.SI<Second>(); // 51.171787824561704 ["s"]
+			var T3 = 0.SI<Second>(); // 50.195047986970792 ["s"]
+			Second tStart = null;
+
+			var P_off = 300.SI<Watt>();
+			var P_on = 900.SI<Watt>();
+			var P_ICEStart = 20000.SI<Watt>();
+
+			for (; i < 100; i++) {
+				dt = (rnd.NextDouble() * 0.2 + 0.4).SI<Second>();
+				T1 += dt;
+
+				modData[ModalResultField.time] = absTime + dt / 2;
+				modData[ModalResultField.simulationInterval] = dt;
+
+				modData[ModalResultField.v_act] = 50.KMPHtoMeterPerSecond();
+				modData[ModalResultField.ICEOn] = true;
+
+				modData[ModalResultField.n_ice_avg] = n_ice;
+				modData[ModalResultField.P_ice_fcmap] = n_ice * t_ice;
+				var fc = fuel.ConsumptionMap.GetFuelConsumption(t_ice, n_ice).Value *
+						fuel.FuelConsumptionCorrectionFactor;
+				modData[ModalResultField.FCWHTCc] = fc;
+				modData[ModalResultField.FCFinal] = fc;
+
+				modData[ModalResultField.P_aux_ESS_mech_ice_off] = 0.SI<Watt>();
+				modData[ModalResultField.P_aux_ESS_mech_ice_on] = 0.SI<Watt>();
+
+				// WHR
+				modData[ModalResultField.P_WHR_el_corr] = 0.SI<Watt>();
+				modData[ModalResultField.P_WHR_mech_corr] = 0.SI<Watt>();
+
+				modData.CommitSimulationStep();
+				absTime += dt;
+			}
+
+			// standstill
+			for (; i < 200; i++) {
+				dt = (rnd.NextDouble() * 0.2 + 0.4).SI<Second>();
+				T2 += dt;
+
+				modData[ModalResultField.time] = absTime + dt / 2;
+				modData[ModalResultField.simulationInterval] = dt;
+
+				modData[ModalResultField.v_act] = 0.KMPHtoMeterPerSecond();
+				modData[ModalResultField.ICEOn] = false;
+
+				modData[ModalResultField.n_ice_avg] = 0.RPMtoRad();
+				modData[ModalResultField.P_ice_fcmap] = 0.SI<Watt>();
+				modData[ModalResultField.FCWHTCc] = 0.SI<KilogramPerSecond>();
+				modData[ModalResultField.FCFinal] = 0.SI<KilogramPerSecond>();
+
+				modData[ModalResultField.P_aux_ESS_mech_ice_off] = P_off;
+				modData[ModalResultField.P_aux_ESS_mech_ice_on] = P_on;
+
+				// WHR
+				modData[ModalResultField.P_WHR_el_corr] = 0.SI<Watt>();
+				modData[ModalResultField.P_WHR_mech_corr] = 0.SI<Watt>();
+
+				modData.CommitSimulationStep();
+				absTime += dt;
+			}
+
+			// constant driving different speed
+			modData[ModalResultField.P_ice_start] = P_ICEStart;
+			n_ice = 1200.RPMtoRad();
+			for (; i < 300; i++) {
+				dt = (rnd.NextDouble() * 0.2 + 0.4).SI<Second>();
+				T3 += dt;
+				if (tStart == null) tStart = dt;
+
+				modData[ModalResultField.time] = absTime + dt / 2;
+				modData[ModalResultField.simulationInterval] = dt;
+
+				modData[ModalResultField.v_act] = 50.KMPHtoMeterPerSecond();
+				modData[ModalResultField.ICEOn] = true;
+
+				modData[ModalResultField.n_ice_avg] = n_ice;
+				modData[ModalResultField.P_ice_fcmap] = n_ice * t_ice;
+				var fc = fuel.ConsumptionMap.GetFuelConsumption(400.SI<NewtonMeter>(), n_ice).Value *
+					fuel.FuelConsumptionCorrectionFactor;
+				modData[ModalResultField.FCWHTCc] = fc;
+				modData[ModalResultField.FCFinal] = fc;
+
+
+				modData[ModalResultField.P_aux_ESS_mech_ice_off] = 0.SI<Watt>();
+				modData[ModalResultField.P_aux_ESS_mech_ice_on] = 0.SI<Watt>();
+
+				// WHR
+				modData[ModalResultField.P_WHR_el_corr] = 0.SI<Watt>();
+				modData[ModalResultField.P_WHR_mech_corr] = 0.SI<Watt>();
+
+				modData.CommitSimulationStep();
+				absTime += dt;
+			}
+
+			modData.Finish(VectoRun.Status.Success);
+			var corr = modData.CorrectedModalData as CorrectedModalData;
+
+			var fcIdle =
+				fuel.ConsumptionMap.GetFuelConsumption(0.SI<NewtonMeter>(), runData.EngineData.IdleSpeed).Value
+					.Value() * fuel.FuelConsumptionCorrectionFactor; // 0.0002929177777777778
+
+			var k_engline = 2.6254521511724e-8;
+			var E_auxICEOnStandstill = (P_on * T2).Value(); // 46054.609042105534
+			var E_auxICEOffStandstill = (P_off * T2).Value(); // 15351.536347368512
+			var E_ICEStart = (P_ICEStart * tStart).Value(); // 11525.53891554733
+
+
+			var fcEssStandStillOff = E_auxICEOffStandstill * k_engline * UF_ESS_Standstill; // 0.0003034945726763096
+			var fcEssStandStillOn =
+				(E_auxICEOnStandstill * k_engline + (fcIdle * T2).Value()) * (1 - UF_ESS_Standstill); // 0.00400097222027925
+			var fcEngineStart = E_ICEStart * k_engline; // 0.00030259750939244944
+
+			var fcModSum = 0.195725;
+
+			Assert.AreEqual(k_engline, modData.EngineLineCorrectionFactor(fuel.FuelData).Value(), 1e-15);
+			Assert.AreEqual(0, corr.WorkWHREl.Value());
+			Assert.AreEqual(0, corr.WorkWHRElMech.Value());
+			Assert.AreEqual(0, corr.WorkWHRMech.Value());
+
+			Assert.AreEqual(E_auxICEOnStandstill, corr.EnergyAuxICEOnStandstill.Value(), 1e-3);
+			Assert.AreEqual(E_auxICEOffStandstill, corr.EnergyAuxICEOffStandstill.Value(), 1e-3);
+			Assert.AreEqual(E_ICEStart, modData.WorkEngineStart().Value());
+
+			Assert.AreEqual(0, corr.EnergyAuxICEOnDriving.Value(), 1e-3);
+			Assert.AreEqual(0, corr.EnergyAuxICEOffDriving.Value(), 1e-3);
+
+			var f = corr.FuelCorrection[fuel.FuelData.FuelType] as FuelConsumptionCorrection;
+
+			Assert.AreEqual(fcEssStandStillOff, f.FcESS_AuxStandstill_ICEOff.Value(), 1e-12);
+			Assert.AreEqual(fcEssStandStillOn, f.FcESS_AuxStandstill_ICEOn.Value(), 1e-12);
+			Assert.AreEqual(fcEngineStart, f.FcESS_EngineStart.Value(), 1e-12);
+			Assert.AreEqual(0, f.FcESS_AuxDriving_ICEOff.Value(), 1e-12);
+			Assert.AreEqual(0, f.FcESS_AuxDriving_ICEOn.Value(), 1e-12);
+
+			Assert.AreEqual(fcModSum, modData.TotalFuelConsumption(ModalResultField.FCWHTCc, fuel.FuelData).Value(), 1e-6);
+			Assert.AreEqual(fcModSum + fcEssStandStillOff + fcEssStandStillOn + fcEngineStart, f.FcEssCorr.Value(), 1e-6);
+
+			Assert.AreEqual(fcModSum + fcEssStandStillOff + fcEssStandStillOn + fcEngineStart, f.FcFinal.Value(), 1e-6);
+		}
+
 		[TestCase()]
 		public void TestBusAuxPsESSStandstill_ModDataCorrection()
 		{
@@ -590,9 +753,9 @@ namespace TUGraz.VectoCore.Tests.Reports
 			var n_ice2 = 1200.RPMtoRad();
 			var n_ice = n_ice1;
 			var t_ice = 400.SI<NewtonMeter>();
-			var T1 = 0.SI<Second>();
-			var T2 = 0.SI<Second>();
-			var T3 = 0.SI<Second>();
+			var T1 = 0.SI<Second>(); // 50.135121407888441 ["s"]
+			var T2 = 0.SI<Second>(); // 51.171787824561704 ["s"]
+			var T3 = 0.SI<Second>(); // 50.195047986970792 ["s"]
 
 			var Nl_consumed = 0.7.SI<NormLiterPerSecond>();
 			var Nl_generated = Nl_consumed;
@@ -1670,10 +1833,10 @@ namespace TUGraz.VectoCore.Tests.Reports
 
 			var k_engline = 2.6254521511724e-8;
 
-			var airDemand = (NlConsumedCorrected * (T1  + T2)); //
+			var airDemand = (NlConsumedCorrected * (T1  + T2)); // 75.750978609710458 ["Nl"]
 																// 106.05137005359464 ["Nl"]
 																// 121.20156577553674 ["Nl"]
-			var deltaAir = (airDemand - Nl_generated * (T1 + T2)).Value(); // 
+			var deltaAir = (airDemand - Nl_generated * (T1 + T2)).Value(); // -30.30039144388418
 																		   // 0
 																		   // 15.150195721942097
 
@@ -1686,7 +1849,7 @@ namespace TUGraz.VectoCore.Tests.Reports
 
 			var kAir = ((workCompOn - workCompOff) / airOn).Value(); // 641347.63479804085
 
-			var E_busAuxPS = kAir * deltaAir / 1e3; // convert Nl to m^3  -19433.084385989911
+			var E_busAuxPS = kAir * deltaAir / 1e3; // -19433.084385989911  convert Nl to m^3  
 													// 0 
 													// 9716.54219299496