diff --git a/VectoCore/VectoCore/OutputData/BatteryElectricPostprocessingCorrection.cs b/VectoCore/VectoCore/OutputData/BatteryElectricPostprocessingCorrection.cs
index a42cde68ce534a5bf772d8a1fdbacf07557dc2a0..ff408d8e3b1aacf40c23dac98377ceab056b316b 100644
--- a/VectoCore/VectoCore/OutputData/BatteryElectricPostprocessingCorrection.cs
+++ b/VectoCore/VectoCore/OutputData/BatteryElectricPostprocessingCorrection.cs
@@ -13,7 +13,7 @@ namespace TUGraz.VectoCore.OutputData
 		{
 			
 			return new PEVCorrectedModalData(modData) {
-				ElectricEnergyConsumption = modData.TimeIntegral<WattSecond>(ModalResultField.P_reess_int),
+				ElectricEnergyConsumption = -modData.TimeIntegral<WattSecond>(ModalResultField.P_reess_int),
 			};
 		}
 
diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
index 0ffd88cb8096a1cb7971788c03df01ac5353aebf..72fb43af5e5ea928cc2e199dec6ccf21f0bdd3e1 100644
--- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
@@ -182,6 +182,7 @@ namespace TUGraz.VectoCore.OutputData
 		Kilogram CO2Total { get; }
 		Joule FuelEnergyConsumptionTotal { get; }
 		WattSecond ElectricEnergyConsumption { get; set; }
+		WattSecondPerMeter ElectricEnergyConsumptionPerMeter { get; }
 	}
 
 	public interface IFuelConsumptionCorrection
diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
index e234d5f6b6a41a74ac8b981aafca13f97baaac61..71332e59e88cdbe1c047ae1adadb04db99eb5a2b 100644
--- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
@@ -126,6 +126,9 @@ namespace TUGraz.VectoCore.OutputData
 				case VectoSimulationJobType.IEPC_S:
 				case VectoSimulationJobType.SerialHybridVehicle:
 					return new SerialHybridModalDataPostprocessingCorrection();
+				case VectoSimulationJobType.IHPC:
+				case VectoSimulationJobType.ParallelHybridVehicle:
+					return new ParallelHybridModalDataPostprocessingCorrection();
 				case VectoSimulationJobType.EngineOnlySimulation:
 					return new EngineOnlyPostprocessingCorrection();
 				default:
diff --git a/VectoCore/VectoCore/OutputData/ModalDataPostprocessingCorrection.cs b/VectoCore/VectoCore/OutputData/ModalDataPostprocessingCorrection.cs
index 032af85fb36b39c174ce092307529dedc3d41224..09b1f2a1bdee68ddd1cb9e8f3d20e97f6251da0e 100644
--- a/VectoCore/VectoCore/OutputData/ModalDataPostprocessingCorrection.cs
+++ b/VectoCore/VectoCore/OutputData/ModalDataPostprocessingCorrection.cs
@@ -22,7 +22,7 @@ namespace TUGraz.VectoCore.OutputData
 		public virtual ICorrectedModalData ApplyCorrection(IModalDataContainer modData, VectoRunData runData)
 		{
 			var essParams = runData.DriverData.EngineStopStart;
-			var r = new CorrectedModalData {
+			var r = new CorrectedModalData (modData){
 				UtilityFactorDriving = essParams.UtilityFactorDriving,
 				UtilityFactorStandstill = essParams.UtilityFactorStandstill
 			};
@@ -339,14 +339,30 @@ namespace TUGraz.VectoCore.OutputData
 		}
 	}
 
-	public class CorrectedModalData : ICorrectedModalData
+	public abstract class AbstractCorrectedModalData
+	{
+		protected readonly IModalDataContainer _modData;
+
+		public AbstractCorrectedModalData(IModalDataContainer modData)
+		{
+			_modData = modData;
+		}
+		public abstract WattSecond ElectricEnergyConsumption { get; set; }
+
+		public WattSecondPerMeter ElectricEnergyConsumptionPerMeter => ElectricEnergyConsumption == null
+			? null
+			: ElectricEnergyConsumption / _modData.Distance;
+	}
+
+	public class CorrectedModalData : AbstractCorrectedModalData, ICorrectedModalData
 	{
 		public SI kAir { get; set; }
 		public Dictionary<FuelType, IFuelConsumptionCorrection> FuelCorrection { get; }
 		#region Implementation of ICorrectedModalData
 
-		public CorrectedModalData()
+		public CorrectedModalData(IModalDataContainer modData) : base(modData)
 		{
+			
 			FuelCorrection = new Dictionary<FuelType, IFuelConsumptionCorrection>();
 		}
 
@@ -401,7 +417,9 @@ namespace TUGraz.VectoCore.OutputData
 			}
 		}
 
-		public WattSecond ElectricEnergyConsumption { get; set; }
+		public override WattSecond ElectricEnergyConsumption { get; set; }
+
+
 
 		public Second ICEOffTimeStandstill { get; set; }
 		public WattSecond EnergyAuxICEOffStandstill { get; set; }
@@ -532,14 +550,12 @@ namespace TUGraz.VectoCore.OutputData
 	}
 
 
-	public class PEVCorrectedModalData : ICorrectedModalData
+	public class PEVCorrectedModalData : AbstractCorrectedModalData, ICorrectedModalData
 	{
-		private IModalDataContainer _modData;
 
-		public PEVCorrectedModalData(IModalDataContainer modData)
+		public PEVCorrectedModalData(IModalDataContainer modData) : base(modData)
 		{
-			_modData = modData;
-			
+
 		}
 
 		#region Implementation of ICorrectedModalData
@@ -566,7 +582,7 @@ namespace TUGraz.VectoCore.OutputData
 		public Dictionary<FuelType, IFuelConsumptionCorrection> FuelCorrection => new Dictionary<FuelType, IFuelConsumptionCorrection>();
 		public Kilogram CO2Total => 0.SI<Kilogram>();
 		public Joule FuelEnergyConsumptionTotal => 0.SI<Joule>();
-		public WattSecond ElectricEnergyConsumption { get; set; } = 0.SI<WattSecond>();
+		public override WattSecond ElectricEnergyConsumption { get; set; } = 0.SI<WattSecond>();
 
 		#endregion
 	}
diff --git a/VectoCore/VectoCore/OutputData/ParallelHybridModalDataPostprocessingCorrection.cs b/VectoCore/VectoCore/OutputData/ParallelHybridModalDataPostprocessingCorrection.cs
index e6b201e57b5067e6e51cbf7a6060b03c50f9b236..30e1def1114f5a9a22b6b1f811c5bc04550814a4 100644
--- a/VectoCore/VectoCore/OutputData/ParallelHybridModalDataPostprocessingCorrection.cs
+++ b/VectoCore/VectoCore/OutputData/ParallelHybridModalDataPostprocessingCorrection.cs
@@ -1,7 +1,22 @@
-namespace TUGraz.VectoCore.OutputData
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.Models.Simulation.Data;
+
+namespace TUGraz.VectoCore.OutputData
 {
 	public class ParallelHybridModalDataPostprocessingCorrection : ModalDataPostprocessingCorrection
 	{
+		#region Overrides of ModalDataPostprocessingCorrection
+
+		public override ICorrectedModalData ApplyCorrection(IModalDataContainer modData, VectoRunData runData)
+		{
+			var r = base.ApplyCorrection(modData, runData);
+
+
+
+			r.ElectricEnergyConsumption = -modData.TimeIntegral<WattSecond>(ModalResultField.P_reess_int);
+			return r;
+		}
 
+		#endregion
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/SerialHybridModalDataPostprocessingCorrection.cs b/VectoCore/VectoCore/OutputData/SerialHybridModalDataPostprocessingCorrection.cs
index 094ef7f60b6808af25f65d4ae850c6d586501676..535ad47a1095680a7db5fe6d469f4d676f9c7d57 100644
--- a/VectoCore/VectoCore/OutputData/SerialHybridModalDataPostprocessingCorrection.cs
+++ b/VectoCore/VectoCore/OutputData/SerialHybridModalDataPostprocessingCorrection.cs
@@ -16,7 +16,7 @@ namespace TUGraz.VectoCore.OutputData
 
 
 
-			r.ElectricEnergyConsumption = modData.TimeIntegral<WattSecond>(ModalResultField.P_reess_int);
+			r.ElectricEnergyConsumption = -modData.TimeIntegral<WattSecond>(ModalResultField.P_reess_int);
 			return r;
 		}
 
diff --git a/VectoCore/VectoCore/OutputData/SumDataFields.cs b/VectoCore/VectoCore/OutputData/SumDataFields.cs
index c0cb8026c3aacd46019c1a6bcfb811fe2438ef62..d940b9ee943cc1d51bfa40fce7e66e5bbaf178d1 100644
--- a/VectoCore/VectoCore/OutputData/SumDataFields.cs
+++ b/VectoCore/VectoCore/OutputData/SumDataFields.cs
@@ -124,7 +124,11 @@ namespace TUGraz.VectoCore.OutputData
 		public const string FCFINAL_LiterPer100M3KM = "FC-Final{0} [l/100m³km]";
 		public const string FCFINAL_LiterPer100PassengerKM = "FC-Final{0} [l/100Pkm]";
 
-		public const string ElectricEnergyConsumptionPerKm = "EC_el_final [kWh/km]";
+		public const string ElectricEnergyConsumption_total = "EC_el_final [kWh]";
+		public const string ElectricEnergyConsumption_KM = "EC_el_final [kWh/km]";
+		public const string ElectricEnergyConsumption_TKM = "EC_el_final [kWh/tkm]";
+		public const string ElectricEnergyConsumption_M3KM = "EC_el_final  [g/m³km]";
+		public const string ElectricEnergyConsumption_PKM = "EC_el_final [g/Pkm]";
 
 		public const string CO2_KM = "CO2 [g/km]";
 		public const string CO2_TKM = "CO2 [g/tkm]";
@@ -603,8 +607,17 @@ namespace TUGraz.VectoCore.OutputData
 			{ CO2_PKM, SumFunc((r, m) => r.VehicleData?.PassengerCount == null ? null : (m.CorrectedModalData.KilogramCO2PerMeter / r.VehicleData.PassengerCount.Value).ConvertToGrammPerKiloMeter(), ModalResultField.dist) },
 
 			// electric consumption
-			{ ElectricEnergyConsumptionPerKm, SumFunc((r, m) => (-m.TimeIntegral<WattSecond>(ModalResultField.P_reess_int) / m.Distance).Cast<JoulePerMeter>().ConvertToKiloWattHourPerKiloMeter(), ModalResultField.P_reess_int)},
-
+			{ ElectricEnergyConsumption_total, SumFunc( (r , m ) 
+				=> (m.CorrectedModalData.ElectricEnergyConsumption.ConvertToKiloWattHour()))},
+			{ ElectricEnergyConsumption_KM, SumFunc((r, m) 
+				=> (m.CorrectedModalData.ElectricEnergyConsumptionPerMeter).ConvertToKiloWattHourPerKiloMeter())},
+			{ ElectricEnergyConsumption_TKM, SumFunc((r, m) 
+				=> r.VehicleData?.Loading == null || r.VehicleData.Loading.IsEqual(0) ? null : 
+					(m.CorrectedModalData.ElectricEnergyConsumptionPerMeter / r.VehicleData.Loading).ConvertToKiloWattHourPerTonKiloMeter())},
+			{ ElectricEnergyConsumption_M3KM, SumFunc((r, m) => r.VehicleData.CargoVolume == null || r.VehicleData.CargoVolume.IsEqual(0) ? null :
+					(m.CorrectedModalData.ElectricEnergyConsumptionPerMeter / r.VehicleData.CargoVolume).ConvertToKiloWattHourPerCubicMeterKiloMeter())},
+			{ ElectricEnergyConsumption_PKM, SumFunc((r, m) => r.VehicleData?.PassengerCount == null ? null : 
+				(m.CorrectedModalData.ElectricEnergyConsumptionPerMeter / r.VehicleData.PassengerCount.Value).ConvertToKiloWattHourPerPassengerKiloMeter())},
 			//			{, SumFunc((r, m) =>)},
 
 		};
diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
index 7f2efb5f2bf92e52ca3f0db48a6ae15b8f23e475..ab9e25f8842046f383141bb874d65360a087e812 100644
--- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
@@ -326,6 +326,15 @@ namespace TUGraz.VectoCore.OutputData
 			Tuple.Create(SumDataFields.CO2_PKM, typeof(ConvertedSI)),
 		};
 
+		public static readonly Tuple<string, Type>[] ElectricEnergyConsumption = {
+			Tuple.Create(SumDataFields.ElectricEnergyConsumption_total, typeof(ConvertedSI)),
+			Tuple.Create(SumDataFields.ElectricEnergyConsumption_KM, typeof(ConvertedSI)),
+			Tuple.Create(SumDataFields.ElectricEnergyConsumption_TKM, typeof(ConvertedSI)),
+			Tuple.Create(SumDataFields.ElectricEnergyConsumption_M3KM, typeof(ConvertedSI)),
+			Tuple.Create(SumDataFields.ElectricEnergyConsumption_PKM, typeof(ConvertedSI)),
+		};
+
+
 		public static readonly Tuple<string, Type>[] VTPCycleColumns = {
 			Tuple.Create(SumDataFields.E_WHEEL, typeof(ConvertedSI)),
 		};
@@ -375,6 +384,7 @@ namespace TUGraz.VectoCore.OutputData
 			//InitTableColumns();
 			CreateColumns(CommonColumns);
 			CreateColumns(CO2Columns);
+			CreateColumns(ElectricEnergyConsumption);
 		}
 
 		public void RegisterComponent(VectoSimulationComponent component, VectoRunData runData)
@@ -616,6 +626,14 @@ namespace TUGraz.VectoCore.OutputData
 				SumDataFields.E_FCMAP_NEG,
 				SumDataFields.E_POWERTRAIN_INERTIA,
 			});
+
+			cols.AddRange(new [] {
+				SumDataFields.ElectricEnergyConsumption_total,
+				SumDataFields.ElectricEnergyConsumption_KM,
+				SumDataFields.ElectricEnergyConsumption_TKM,
+				SumDataFields.ElectricEnergyConsumption_M3KM,
+				SumDataFields.ElectricEnergyConsumption_PKM,
+			});
 			cols.AddRange(AuxColumns.OrderBy(x => x));
 			cols.AddRange(new[] {
 				SumDataFields.E_AUX,
@@ -1034,15 +1052,15 @@ namespace TUGraz.VectoCore.OutputData
 	//		} else {
 	//			if (runData.ElectricMachinesData.Count > 0) {
 	//				//lock (Table) {
-	//				//	if (!Table.Columns.Contains(SumDataFields.ElectricEnergyConsumptionPerKm)) {
+	//				//	if (!Table.Columns.Contains(SumDataFields.ElectricEnergyConsumption_KM)) {
 	//				//		lock (_tableLock) {
-	//				//			var col = Table.Columns.Add(SumDataFields.ElectricEnergyConsumptionPerKm, typeof(ConvertedSI));
+	//				//			var col = Table.Columns.Add(SumDataFields.ElectricEnergyConsumption_KM, typeof(ConvertedSI));
 	//				//			col.SetOrdinal(Table.Columns[SumDataFields.CO2_KM].Ordinal);
 	//				//		}
 	//				//	}
 	//				//}
 
-	//				//row[SumDataFields.ElectricEnergyConsumptionPerKm] =
+	//				//row[SumDataFields.ElectricEnergyConsumption_KM] =
 	//				//	(-modData.TimeIntegral<WattSecond>(ModalResultField.P_reess_int) / modData.Distance).Cast<JoulePerMeter>().ConvertToKiloWattHourPerKiloMeter();
 	//			}
 	//		}
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs
index c6152a5c536ec784d69260b0f61ddfc1295218ce..1d440574bc42aeaa6c09983c2b9ccb22d717f70d 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs
@@ -96,8 +96,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 				)
 			);
 
-		
-			var lh = results.SingleOrDefault(res => res.Mission == MissionType.LongHaul && res.LoadingType == LoadingType.ReferenceLoad);
+			// ReSharper disable once PossibleNullReferenceException
 			Vehicle.XPathSelectElement($"//*[local-name()='{XMLNames.VehicleGroupCO2}']").Value = DeclarationData
 				.GetVehicleGroupCO2StandardsGroup(Input).ToXMLFormat();