diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs b/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs
index 17a667cdf95053bcb960416978ce8372742a5d41..81f2b58a6103a90171a5217edddd5873d7746536 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs
@@ -83,7 +83,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 
 		public virtual double Progress
 		{
-			get { return CyclePort.Progress * (PostProcessingDone ? 1.0 : 0.99); }
+			get { return CyclePort.Progress * (PostProcessingDone ? 1.0 : 0.99) * (WritingResultsDone ? 1.0 : 0.99); }
 		}
 
 		protected VectoRun(IVehicleContainer container)
@@ -93,6 +93,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			Container.RunStatus = Status.Pending;
 			CyclePort = container.GetCycleOutPort();
 			PostProcessingDone = false;
+			WritingResultsDone = false;
 		}
 
 		public IVehicleContainer GetContainer()
@@ -140,7 +141,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				if (!GetContainer().RunData.Exempted) {
 					foreach (var fuel in GetContainer().RunData.EngineData.Fuels) {
 						// calculate vehicleline correction here in local thread context because writing sum-data and report afterwards is synchronized
-						var cf = GetContainer().ModalData.VehicleLineCorrectionFactor(fuel.FuelData);
+						//var cf = GetContainer().ModalData.VehicleLineCorrectionFactor(fuel.FuelData);
+						GetContainer().ModalData.CalculateAggregateValues();
 					}
 				}
 
@@ -182,8 +184,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				Container.FinishSimulationRun(ex);
 				throw ex;
 			}
-			Container.RunStatus = Progress < 1 ? Status.Aborted : Status.Success;
+			Container.RunStatus = CyclePort.Progress < 1 ? Status.Aborted : Status.Success;
 			Container.FinishSimulationRun();
+			WritingResultsDone = true;
 			if (Progress.IsSmaller(1, 1e-9)) {
 				throw new VectoSimulationException(
 					"{5} ({6} {7}) Progress: {8} - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4}",
@@ -191,12 +194,13 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 					RunSuffix, Progress);
 			}
 			IterationStatistics.FinishSimulation(RunName + CycleName + RunSuffix + RunIdentifier);
-
 			Log.Info("VectoJob finished.");
 		}
 
 		public bool PostProcessingDone { get; protected set; }
 
+		public bool WritingResultsDone { get; protected set; }
+
 		public void Cancel()
 		{
 			_cancelled = true;
diff --git a/VectoCore/VectoCore/OutputData/DeclarationReport.cs b/VectoCore/VectoCore/OutputData/DeclarationReport.cs
index 616829475eadf28b90515cfb20dafd945b005e9b..0cbf32ebe1e1b9b6a6913784e88f0de8e0643c00 100644
--- a/VectoCore/VectoCore/OutputData/DeclarationReport.cs
+++ b/VectoCore/VectoCore/OutputData/DeclarationReport.cs
@@ -147,6 +147,15 @@ namespace TUGraz.VectoCore.OutputData
 
 
 		[MethodImpl(MethodImplOptions.Synchronized)]
+		protected void WriteResults()
+		{
+			_resultCount--;
+			if (_resultCount == 0) {
+				DoWriteReport();
+				Flc = null;
+			}
+		}
+
 		public void AddResult(LoadingType loadingType, Mission mission, int fuelMode, VectoRunData runData,
 			IModalDataContainer modData)
 		{
@@ -159,16 +168,13 @@ namespace TUGraz.VectoCore.OutputData
 			if (mission.MissionType != MissionType.ExemptedMission && !Missions[fuelMode][mission.MissionType].ResultEntry.ContainsKey(loadingType)) {
 				throw new VectoException("Unknown loading type {0} for mission {1}", loadingType, mission.MissionType);
 			}
-			_resultCount--;
+			
 
 			if (mission.MissionType != MissionType.ExemptedMission) {
 				DoAddResult(Missions[fuelMode][mission.MissionType].ResultEntry[loadingType], runData, modData);
 			}
 
-			if (_resultCount == 0) {
-				DoWriteReport();
-				Flc = null;
-			}
+			WriteResults();
 		}
 
 		/// <summary>
diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
index b32044a47fd246829df28c2133df5b82f8607579..353d49e76fae77c6d470b2e68da0cf33a3392575 100644
--- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
@@ -114,6 +114,7 @@ namespace TUGraz.VectoCore.OutputData
 
 		Meter Distance { get; }
 		KilogramPerWattSecond VehicleLineCorrectionFactor(FuelData.Entry fuel);
+		void CalculateAggregateValues();
 	}
 
 	public static class ModalDataContainerExtensions
diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
index d37db93e4913ab98d648b9c55b6bd83609785fb4..8134139ebef9c454a0e8e8a8ea0035b5f2e707c1 100644
--- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
@@ -183,6 +183,48 @@ namespace TUGraz.VectoCore.OutputData
 			return _vehicleLine[fuel.FuelType];
 		}
 
+		public void CalculateAggregateValues()
+		{
+			var duration = Duration;
+			var distance = Distance;
+			if (distance != null && duration != null && !duration.IsEqual(0)) {
+				var speed = distance / duration;
+			}
+
+			foreach (var fuel in FuelColumns.Keys) {
+				VehicleLineCorrectionFactor(fuel);
+				TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCMap));
+				TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCNCVc));
+				TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCWHTCc));
+				TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCAAUX));
+				TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCMap));
+				TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCEngineStopStart));
+				TimeIntegral<Kilogram>(GetColumnName(fuel, ModalResultField.FCFinal));
+				
+			}
+			TimeIntegral<WattSecond>(ModalResultField.P_WHR_el_corr);
+			TimeIntegral<WattSecond>(ModalResultField.P_WHR_mech_corr);
+			TimeIntegral<WattSecond>(ModalResultField.P_aux_ice_off);
+			TimeIntegral<WattSecond>(ModalResultField.P_ice_start);
+
+			TimeIntegral<WattSecond>(ModalResultField.P_clutch_loss);
+			TimeIntegral<WattSecond>(ModalResultField.P_gbx_shift_loss);
+			TimeIntegral<WattSecond>(ModalResultField.P_gbx_loss);
+			TimeIntegral<WattSecond>(ModalResultField.P_wheel_in);
+			TimeIntegral<WattSecond>(ModalResultField.P_axle_loss);
+			TimeIntegral<WattSecond>(ModalResultField.P_ret_loss);
+			TimeIntegral<WattSecond>(ModalResultField.P_angle_loss);
+			TimeIntegral<WattSecond>(ModalResultField.P_TC_loss);
+			TimeIntegral<WattSecond>(ModalResultField.P_brake_loss);
+			TimeIntegral<WattSecond>(ModalResultField.P_wheel_inertia);
+			TimeIntegral<WattSecond>(ModalResultField.P_veh_inertia);
+			TimeIntegral<WattSecond>(ModalResultField.P_aux);
+			TimeIntegral<WattSecond>(ModalResultField.P_slope);
+			TimeIntegral<WattSecond>(ModalResultField.P_roll);
+			TimeIntegral<WattSecond>(ModalResultField.P_air);
+
+		}
+
 		public bool HasTorqueConverter { get; set; }
 
 		public void CommitSimulationStep()
diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
index 4e05fac1c9239d88f4d8b8cbd033af06eac166d2..361cd7e1886e5fcc75cf620182baa3e334557984 100644
--- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
@@ -456,11 +456,17 @@ namespace TUGraz.VectoCore.OutputData
 		/// Writes the result of one run into the summary data container.
 		/// </summary>
 		[MethodImpl(MethodImplOptions.Synchronized)]
-		public virtual void Write(IModalDataContainer modData, int jobNr, int runNr, VectoRunData runData)
+		protected DataRow GetResultRow(IModalDataContainer modData, VectoRunData runData)
 		{
 			UpdateTableColumns(modData.FuelData, runData.EngineData.MultipleEngineFuelModes);
 			var row = Table.NewRow();
 			Table.Rows.Add(row);
+			return row;
+		}
+
+		public virtual void Write(IModalDataContainer modData, int jobNr, int runNr, VectoRunData runData)
+		{
+			var row = GetResultRow(modData, runData);
 
 			row[SORT] = jobNr * 1000 + runNr;
 			row[JOB] = string.Format("{0}-{1}", jobNr, runNr); //ReplaceNotAllowedCharacters(current);
diff --git a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
index 4d5664fc9694aeb00eb0354c2c665af5df0512b1..21f8ffdce531aa206253c86c34b3fa13d98ca2e9 100644
--- a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
@@ -238,6 +238,11 @@ namespace TUGraz.VectoCore.Tests.Utils
 			return 0.SI<KilogramPerWattSecond>();
 		}
 
+		public void CalculateAggregateValues()
+		{
+			
+		}
+
 		public string RunName { get; set; }
 		public string CycleName { get; set; }
 		public string RunSuffix { get; set; }