diff --git a/VectoCommon/VectoCommon/Utils/SIExtensionMetods.cs b/VectoCommon/VectoCommon/Utils/SIExtensionMetods.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e7ee6be73107d20a678cc25c25d23979e77f10a4
--- /dev/null
+++ b/VectoCommon/VectoCommon/Utils/SIExtensionMetods.cs
@@ -0,0 +1,20 @@
+namespace TUGraz.VectoCommon.Utils {
+	public static class SIExtensionMetods
+	{
+		/// <summary>
+		/// Returns a default value if the SI object is null.
+		/// </summary>
+		/// <typeparam name="T">The SI Type.</typeparam>
+		/// <param name="self">The SI Instance.</param>
+		/// <param name="defaultValue">The default value.</param>
+		/// <returns>If self is null, the default value as SI-Type is returned. Otherwise self is returned.</returns>
+		/// <code>
+		/// NewtonMeter t = null;
+		/// var x = t.DefaultIfNull(0);
+		/// </code>
+		public static T DefaultIfNull<T>(this T self, double defaultValue) where T : SIBase<T>
+		{
+			return self ?? defaultValue.SI<T>();
+		}
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
index 9757ba1c4eaa3f3f4be1b79d169de068e25f4913..44cae83e6e8b26d901084bb7120bdb95a145df2d 100644
--- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
@@ -110,6 +110,11 @@ namespace TUGraz.VectoCore.OutputData
 
 		string GetColumnName(FuelData.Entry fuelData, ModalResultField mrf);
 		void Reset();
+
+		Second Duration { get; }
+
+		Meter Distance { get; }
+		KilogramPerWattSecond VehicleLineCorrectionFactor(FuelData.Entry fuel);
 	}
 
 	public static class ModalDataContainerExtensions
@@ -123,23 +128,7 @@ namespace TUGraz.VectoCore.OutputData
 		{
 			return data.GetValues<T>(field).Min();
 		}
-
-		/// <summary>
-		/// Returns a default value if the SI object is null.
-		/// </summary>
-		/// <typeparam name="T">The SI Type.</typeparam>
-		/// <param name="self">The SI Instance.</param>
-		/// <param name="defaultValue">The default value.</param>
-		/// <returns>If self is null, the default value as SI-Type is returned. Otherwise self is returned.</returns>
-		/// <code>
-		/// NewtonMeter t = null;
-		/// var x = t.DefaultIfNull(0);
-		/// </code>
-		public static T DefaultIfNull<T>(this T self, double defaultValue) where T : SIBase<T>
-		{
-			return self ?? defaultValue.SI<T>();
-		}
-
+		
 		public static MeterPerSquareSecond AccelerationsPositive(this IModalDataContainer data)
 		{
 			return data.GetValues<MeterPerSquareSecond>(ModalResultField.acc)
@@ -163,7 +152,7 @@ namespace TUGraz.VectoCore.OutputData
 				dt = x.Field<Second>(ModalResultField.simulationInterval.GetName())
 			})
 				.Sum(x => x.a > 0.125 ? x.dt : 0.SI<Second>()).DefaultIfNull(0);
-			return 100 * (accelerationTimeShare / data.Duration()).Cast<Scalar>();
+			return 100 * (accelerationTimeShare / data.Duration).Cast<Scalar>();
 		}
 
 		public static Scalar DecelerationTimeShare(this IModalDataContainer data)
@@ -173,7 +162,7 @@ namespace TUGraz.VectoCore.OutputData
 				dt = x.Field<Second>(ModalResultField.simulationInterval.GetName())
 			})
 				.Sum(x => x.a < -0.125 ? x.dt : 0.SI<Second>()).DefaultIfNull(0);
-			return 100 * (decelerationTimeShare / data.Duration()).Cast<Scalar>();
+			return 100 * (decelerationTimeShare / data.Duration).Cast<Scalar>();
 		}
 
 		public static Scalar CruiseTimeShare(this IModalDataContainer data)
@@ -185,7 +174,7 @@ namespace TUGraz.VectoCore.OutputData
 			})
 				.Sum(x => x.v >= 0.1.KMPHtoMeterPerSecond() && x.a.IsBetween(-0.125, 0.125) ? x.dt : 0.SI<Second>())
 				.DefaultIfNull(0);
-			return 100 * (cruiseTime / data.Duration()).Cast<Scalar>();
+			return 100 * (cruiseTime / data.Duration).Cast<Scalar>();
 		}
 
 		public static Scalar StopTimeShare(this IModalDataContainer data)
@@ -195,12 +184,12 @@ namespace TUGraz.VectoCore.OutputData
 				dt = x.Field<Second>(ModalResultField.simulationInterval.GetName())
 			})
 				.Sum(x => x.v < 0.1.KMPHtoMeterPerSecond() ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>();
-			return 100 * (stopTime / data.Duration()).Cast<Scalar>();
+			return 100 * (stopTime / data.Duration).Cast<Scalar>();
 		}
 
 		public static MeterPerSquareSecond AccelerationAverage(this IModalDataContainer data)
 		{
-			return data.TimeIntegral<MeterPerSecond>(ModalResultField.acc) / data.Duration();
+			return data.TimeIntegral<MeterPerSecond>(ModalResultField.acc) / data.Duration;
 		}
 
 		public static Meter AltitudeDelta(this IModalDataContainer data)
@@ -263,34 +252,6 @@ namespace TUGraz.VectoCore.OutputData
 			return data.TimeIntegral<WattSecond>(ModalResultField.P_TC_loss);
 		}
 
-		public static Second Duration(this IModalDataContainer data)
-		{
-			var time = data.GetValues<Second>(ModalResultField.time).ToList();
-			var dt = data.GetValues<Second>(ModalResultField.simulationInterval).ToList();
-			if (time.Count == 1) {
-				return time.First();
-			}
-			return time.Max() - time.Min() + dt.First() / 2 + dt.Last() / 2;
-		}
-
-		public static Meter Distance(this IModalDataContainer data)
-		{
-			var max = data.GetValues<Meter>(ModalResultField.dist).LastOrDefault() ?? 0.SI<Meter>();
-			var first = data.GetValues(
-				r => new {
-					dist = r.Field<Meter>(ModalResultField.dist.GetName()),
-					vact = r.Field<MeterPerSecond>(ModalResultField.v_act.GetName()),
-					acc = r.Field<MeterPerSquareSecond>(ModalResultField.acc.GetName()),
-					dt = r.Field<Second>(ModalResultField.simulationInterval.GetName())
-				}).First();
-			var min = 0.SI<Meter>();
-			if (first != null && first.vact != null && first.acc != null && first.dt != null) {
-				min = first.dist - first.vact * first.dt - first.acc * first.dt * first.dt / 2.0;
-			}
-			
-			return max == null || min == null ? null : max - min;
-		}
-
 		public static WattSecond WorkTotalMechanicalBrake(this IModalDataContainer data)
 		{
 			return data.TimeIntegral<WattSecond>(ModalResultField.P_brake_loss);
@@ -345,18 +306,18 @@ namespace TUGraz.VectoCore.OutputData
 
 		public static Watt PowerWheelPositive(this IModalDataContainer data)
 		{
-			return data.WorkWheelsPos() / data.Duration();
+			return data.WorkWheelsPos() / data.Duration;
 		}
 
 		
 		public static KilogramPerSecond FuelConsumptionPerSecond(this IModalDataContainer data, ModalResultField mrf, FuelData.Entry fuelData)
 		{
-			return data.TimeIntegral<Kilogram>(data.GetColumnName(fuelData, mrf)) / data.Duration();
+			return data.TimeIntegral<Kilogram>(data.GetColumnName(fuelData, mrf)) / data.Duration;
 		}
 
 		public static KilogramPerMeter FuelConsumptionPerMeter(this IModalDataContainer data, ModalResultField mrf, FuelData.Entry fuelData)
 		{
-			var distance = data.Distance();
+			var distance = data.Distance;
 			if (distance == null || distance.IsEqual(0)) {
 				return null;
 			}
@@ -377,15 +338,15 @@ namespace TUGraz.VectoCore.OutputData
 				.Zip(simulationIntervals, (value, dt) => new { Dt = dt, Value = value * dt })
 				.Where(v => v.Value > 0).ToList();
 			if (values.Any()) {
-				return values.Sum(v => v.Value) / Duration(data);
+				return values.Sum(v => v.Value) / data.Duration;
 			}
 			return 0.SI<Watt>();
 		}
 
 		public static MeterPerSecond Speed(this IModalDataContainer data)
 		{
-			var distance = Distance(data);
-			var duration = Duration(data);
+			var distance = data.Distance;
+			var duration = data.Duration;
 			if (distance == null || duration == null || duration.IsEqual(0)) {
 				return null;
 			}
@@ -430,7 +391,7 @@ namespace TUGraz.VectoCore.OutputData
 		{
 			var integral = data.GetValues(x => x.Field<PerSecond>(ModalResultField.n_eng_avg.GetName()).Value() *
 												x.Field<Second>(ModalResultField.simulationInterval.GetName()).Value()).Sum();
-			return (integral / Duration(data).Value()).SI<PerSecond>();
+			return (integral / data.Duration.Value()).SI<PerSecond>();
 		}
 
 		public static PerSecond MaxEngineSpeed(this IModalDataContainer data)
@@ -445,7 +406,7 @@ namespace TUGraz.VectoCore.OutputData
 				tEng = x.Field<NewtonMeter>(ModalResultField.T_eng_fcmap.GetName()).DefaultIfNull(0),
 				dt = x.Field<Second>(ModalResultField.simulationInterval.GetName())
 			}).Sum(x => x.tMax.IsEqual(x.tEng, 5.SI<NewtonMeter>()) ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>();
-			return 100 * sum / Duration(data);
+			return 100 * sum / data.Duration;
 		}
 
 		/// <summary>
@@ -490,7 +451,7 @@ namespace TUGraz.VectoCore.OutputData
 				dt = x.Field<Second>(ModalResultField.simulationInterval.GetName())
 			})
 				.Sum(x => x.DrivingBehavior == DrivingBehavior.Coasting ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>();
-			return 100 * sum / Duration(data);
+			return 100 * sum / data.Duration;
 		}
 
 		public static Scalar BrakingTimeShare(this IModalDataContainer data)
@@ -500,7 +461,7 @@ namespace TUGraz.VectoCore.OutputData
 				dt = x.Field<Second>(ModalResultField.simulationInterval.GetName())
 			})
 				.Sum(x => x.DrivingBehavior == DrivingBehavior.Braking ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>();
-			return 100 * sum / Duration(data);
+			return 100 * sum / data.Duration;
 		}
 
 		public static Dictionary<uint, Scalar> TimeSharePerGear(this IModalDataContainer data, uint gearCount)
@@ -519,7 +480,7 @@ namespace TUGraz.VectoCore.OutputData
 				retVal[entry.Gear] += entry.dt.Value();
 			}
 
-			var duration = Duration(data).Value();
+			var duration = data.Duration.Value();
 			for (uint i = 0; i <= gearCount; i++) {
 				retVal[i] = 100 * retVal[i] / duration;
 			}
diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
index 21ee99f4c1a3bb59587b4fe624d58da4848f8d4f..59e5ef8c01639d4186192e9c6512a85eceffba79 100644
--- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
@@ -57,15 +57,20 @@ namespace TUGraz.VectoCore.OutputData
 		private Exception SimException;
 
 		protected internal readonly Dictionary<FuelData.Entry, Dictionary<ModalResultField, DataColumn>> FuelColumns = new Dictionary<FuelData.Entry, Dictionary<ModalResultField, DataColumn>>();
+		private Second _duration;
+		private Meter _distance;
 
 		public static readonly IList<ModalResultField> FuelConsumptionSignals = new[] {
 			ModalResultField.FCMap, ModalResultField.FCNCVc, ModalResultField.FCWHTCc, ModalResultField.FCAAUX,
 			ModalResultField.FCEngineStopStart,  ModalResultField.FCFinal
 		};
 
-		public int JobRunId { get; private set; }
-		public string RunName { get; private set; }
-		public string CycleName { get; private set; }
+		private readonly Dictionary<String, SI> _timeIntegrals = new Dictionary<string, SI>();
+		private readonly Dictionary<FuelType, KilogramPerWattSecond> _vehicleLine = new Dictionary<FuelType, KilogramPerWattSecond>();
+
+		public int JobRunId { get; }
+		public string RunName { get; }
+		public string CycleName { get; }
 		public string RunSuffix { get; private set; }
 
 		public bool WriteModalResults { get; set; }
@@ -145,6 +150,37 @@ namespace TUGraz.VectoCore.OutputData
 		{
 			Data.Rows.Clear();
 			CurrentRow = Data.NewRow();
+			ClearAggregateResults();
+		}
+
+		public Second Duration
+		{
+			get { return _duration ?? (_duration = CalcDuration()); }
+		}
+
+		public Meter Distance
+		{
+			get { return _distance ?? (_distance = CalcDistance()); }
+		}
+
+		public KilogramPerWattSecond VehicleLineCorrectionFactor(FuelData.Entry fuel)
+		{
+			if (_vehicleLine.ContainsKey(fuel.FuelType)) {
+				return _vehicleLine[fuel.FuelType];
+			}
+
+			double k, d, r;
+			VectoMath.LeastSquaresFitting(
+				GetValues(
+					x => x.Field<bool>(ModalResultField.IgnitionOn.GetName())
+						? new Point(
+							x.Field<SI>(ModalResultField.P_eng_fcmap.GetName()).Value(),
+							x.Field<SI>(GetColumnName(fuel, ModalResultField.FCFinal)).Value())
+						: null).Where(x => x != null && x.Y > 0),
+				out k, out d, out r);
+			_vehicleLine[fuel.FuelType] = k.SI<KilogramPerWattSecond>();
+
+			return _vehicleLine[fuel.FuelType];
 		}
 
 		public bool HasTorqueConverter { get; set; }
@@ -153,6 +189,42 @@ namespace TUGraz.VectoCore.OutputData
 		{
 			Data.Rows.Add(CurrentRow);
 			CurrentRow = Data.NewRow();
+			ClearAggregateResults();
+		}
+
+		protected virtual void ClearAggregateResults()
+		{
+			_duration = null;
+			_distance = null;
+			_timeIntegrals.Clear();
+		}
+
+		protected virtual Second CalcDuration()
+		{
+			var time = GetValues<Second>(ModalResultField.time).ToList();
+			var dt = GetValues<Second>(ModalResultField.simulationInterval).ToList();
+			if (time.Count == 1) {
+				return time.First();
+			}
+			return time.Last() - time.First() + dt.First() / 2 + dt.Last() / 2;
+		}
+
+		protected virtual Meter CalcDistance()
+		{
+			var max = GetValues<Meter>(ModalResultField.dist).LastOrDefault() ?? 0.SI<Meter>();
+			var first = GetValues(
+				r => new {
+					dist = r.Field<Meter>(ModalResultField.dist.GetName()),
+					vact = r.Field<MeterPerSecond>(ModalResultField.v_act.GetName()),
+					acc = r.Field<MeterPerSquareSecond>(ModalResultField.acc.GetName()),
+					dt = r.Field<Second>(ModalResultField.simulationInterval.GetName())
+				}).First();
+			var min = 0.SI<Meter>();
+			if (first != null && first.vact != null && first.acc != null && first.dt != null) {
+				min = first.dist - first.vact * first.dt - first.acc * first.dt * first.dt / 2.0;
+			}
+
+			return max == null || min == null ? null : max - min;
 		}
 
 		public IList<FuelData.Entry> FuelData
@@ -332,11 +404,15 @@ namespace TUGraz.VectoCore.OutputData
 
 		public T TimeIntegral<T>(ModalResultField field, Func<SI, bool> filter = null) where T : SIBase<T>
 		{
+
 			return TimeIntegral<T>(field.GetName(), filter);
 		}
 
 		public T TimeIntegral<T>(string field, Func<SI, bool> filter = null) where T : SIBase<T>
 		{
+			if (filter == null && _timeIntegrals.ContainsKey(field)) {
+				return (T)_timeIntegrals[field];
+			}
 			var result = 0.0;
 			var idx = Data.Columns.IndexOf(field);
 			for (var i = 0; i < Data.Rows.Count; i++) {
@@ -349,7 +425,12 @@ namespace TUGraz.VectoCore.OutputData
 				}
 			}
 
-			return result.SI<T>();
+			var retVal = result.SI<T>();
+			;
+			if (filter == null) {
+				_timeIntegrals[field] = retVal;
+			}
+			return retVal;
 		}
 
 		public IEnumerable<T> GetValues<T>(ModalResultField key)
diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
index b0dd779eb32f235d2cd8e855aca79dc65d06b512..6ee490abeaab00df8457b621979fa18206b18a6d 100644
--- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
@@ -476,10 +476,10 @@ namespace TUGraz.VectoCore.OutputData
 
 			row[VEHICLE_FUEL_TYPE] = string.Join(", ", modData.FuelData.Select(x => x.GetLabel()));
 
-			var totalTime = modData.Duration();
+			var totalTime = modData.Duration;
 			row[TIME] = (ConvertedSI)totalTime;
 
-			var distance = modData.Distance();
+			var distance = modData.Distance;
 			if (distance != null) {
 				row[DISTANCE] = distance.ConvertToKiloMeter();
 			}
@@ -529,8 +529,8 @@ namespace TUGraz.VectoCore.OutputData
 			var workWHREl = modData.TimeIntegral<WattSecond>(ModalResultField.P_WHR_el_corr);
 			var workWhrMech = - workWHREl / DeclarationData.AlternaterEfficiency;
 
-			var distance = modData.Distance();
-			var duration = modData.Duration();
+			var distance = modData.Distance;
+			var duration = modData.Duration;
 
 			var kilogramCO2PerMeter = 0.SI<KilogramPerMeter>();
 
@@ -567,17 +567,11 @@ namespace TUGraz.VectoCore.OutputData
 
 				var fcModSum = modData.TotalFuelConsumption(ModalResultField.FCFinal, fuel);
 
-				double k, d, r;
-				VectoMath.LeastSquaresFitting(
-					modData.GetValues(
-						x => x.Field<bool>(ModalResultField.IgnitionOn.GetName())
-							? new Point(
-								x.Field<SI>(ModalResultField.P_eng_fcmap.GetName()).Value(), x.Field<SI>(modData.GetColumnName(fuel, ModalResultField.FCFinal)).Value())
-							: null).Where(x => x != null && x.Y > 0),
-					out k, out d, out r);
-
-				var correction = k.SI<KilogramPerWattSecond>();
-
+				var correction = 0.SI<KilogramPerWattSecond>();
+				if (!workWhrMech.IsEqual(0) || !workESS.IsEqual(0)) { 
+					correction = modData.VehicleLineCorrectionFactor(fuel);
+				}
+				
 				row[FcCol(K_VEHLINE, suffix)] = correction.ConvertToGramPerKiloWattHour();
 
 				var fcWHRCorr = fcModSum + correction * workWhrMech;
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
index 9ccb6507191660a97a3415fec175c81f2013aa46..6dbd53c4d0454d45c5b41b56c501f31f19291c4d 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
@@ -140,7 +140,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 				EngineSpeedDrivingAvg = (entriesDriving.Sum(x => (x.nEng * x.dt).Value()) / drivingTime.Value()).SI<PerSecond>();
 				EngineSpeedDrivingMin = entriesDriving.Min(x => x.nEng);
 				EngineSpeedDrivingMax = entriesDriving.Max(x => x.nEng);
-				Distance = data.Distance();
+				Distance = data.Distance;
 
 				var workESS = data.WorkAuxiliariesDuringEngineStop() + data.WorkEngineStart();
 				var workWHRel = data.TimeIntegral<WattSecond>(ModalResultField.P_WHR_el_corr);
@@ -153,14 +153,11 @@ namespace TUGraz.VectoCore.OutputData.XML
 				foreach (var entry in data.FuelData) {
 					var col = data.GetColumnName(entry, ModalResultField.FCFinal);
 					var fcSum = data.TimeIntegral<Kilogram>(col);
-					//FuelConsumptionTotal[entry.FuelType] = fcSum;
-					double k, d, s;
-					VectoMath.LeastSquaresFitting(
-						data.GetValues(
-							x => x.Field<bool>(ModalResultField.IgnitionOn.GetName()) ? new Point(
-								x.Field<SI>(ModalResultField.P_eng_fcmap.GetName()).Value(), x.Field<SI>(data.GetColumnName(entry, ModalResultField.FCFinal)).Value()) : null).Where(x => x != null && x.Y > 0),
-						out k, out d, out s);
-					var correction = k.SI<KilogramPerWattSecond>();
+
+					var correction = 0.SI<KilogramPerWattSecond>();
+					if (!(workWhrMech + workESS).IsEqual(0)) {
+						correction = data.VehicleLineCorrectionFactor(entry);
+					}
 					var fcTotalcorr = fcSum + correction * (workESS + workWhrMech);
 					FuelConsumptionFinal[entry.FuelType] = fcTotalcorr;
 					CO2Total += fcTotalcorr * entry.CO2PerFuelWeight;
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs
index 1fd1402451127c21c88d69c0869cad08f0da72c5..2adaff9b179671424d381012ac888449934c40cf 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs
@@ -97,7 +97,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 				}
 
 				var aux = data.Auxiliaries.FirstOrDefault(x => x.Key == Constants.Auxiliaries.IDs.Fan);
-				AverageFanPower = data.AuxiliaryWork(aux.Value) / data.Duration();
+				AverageFanPower = data.AuxiliaryWork(aux.Value) / data.Duration;
 				var cycleEntries = runData.Cycle.Entries.Pairwise().Select(
 					x => new {
 						PWheel = x.Item1.PWheel > 0 ? x.Item1.PWheel : 0.SI<Watt>(),
diff --git a/VectoCore/VectoCoreTest/Integration/FuelTypesTest.cs b/VectoCore/VectoCoreTest/Integration/FuelTypesTest.cs
index 64a4dcc89a5b64e358e7782cf660f6787a1c043b..7455f66961e44cd8ef50487348fa42c3bc394624 100644
--- a/VectoCore/VectoCoreTest/Integration/FuelTypesTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/FuelTypesTest.cs
@@ -134,7 +134,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 			// restore data table before assertions
 			modContainer.Data = modData;
 			var fuel = modContainer.FuelData.First();
-			var distance = modContainer.Distance();
+			var distance = modContainer.Distance;
 			var fcFinal = modContainer.FuelConsumptionPerMeter(ModalResultField.FCFinal, fuel);
 			var fcVolumePerMeter = fuel.FuelDensity == null ? null :
 				(fcFinal / fuel.FuelDensity)
diff --git a/VectoCore/VectoCoreTest/Reports/ModDataTest.cs b/VectoCore/VectoCoreTest/Reports/ModDataTest.cs
index 465a206490d6ccfe68f064f793f46fc5222641df..fe1d6cccacb24e2a6a2ffac58eb6fac7a6285bf8 100644
--- a/VectoCore/VectoCoreTest/Reports/ModDataTest.cs
+++ b/VectoCore/VectoCoreTest/Reports/ModDataTest.cs
@@ -97,7 +97,7 @@ namespace TUGraz.VectoCore.Tests.Reports
 			var totalTime = 50.SI<Second>();
 			var expected = initalSpeed * totalTime + acc / 2.0 * totalTime * totalTime;
 
-			Assert.AreEqual(expected.Value(), modData.Distance().Value(), 1e-6);
+			Assert.AreEqual(expected.Value(), modData.Distance.Value(), 1e-6);
 		}
 
 
diff --git a/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs b/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs
index edf11e45d24f8c0908a9e3d6895911579dce6086..db2db47f984c89af49c29341d8b8ac91cf9d8b3d 100644
--- a/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs
+++ b/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs
@@ -111,8 +111,8 @@ namespace TUGraz.VectoCore.Tests.Reports
 			var sumData = VectoCSVFile.Read("testsumcalc_fixed.vsum", false, true);
 
 			// duration: 500s, distance: 500m
-			Assert.AreEqual(500, modData.Duration().Value());
-			Assert.AreEqual(500, modData.Distance().Value());
+			Assert.AreEqual(500, modData.Duration.Value());
+			Assert.AreEqual(500, modData.Distance.Value());
 
 			// 3kW * 500s => to kWh
 			Assert.AreEqual(500.0 * 3000.0 / 1000 / 3600, sumData.Rows[0].ParseDouble("E_air [kWh]"), 1e-3);
diff --git a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
index dee1955b346a66150ca5b34af0570309486e07c7..d63486729b67928f3cfe0ecfc5fbf5851c9ebb09 100644
--- a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
@@ -49,8 +49,10 @@ namespace TUGraz.VectoCore.Tests.Utils
 	internal class MockModalDataContainer : IModalDataContainer
 	{
 		protected Dictionary<FuelData.Entry, Dictionary<ModalResultField, DataColumn>> FuelColumns = new Dictionary<FuelData.Entry, Dictionary<ModalResultField, DataColumn>>();
+		private Second _duration;
+		private Meter _distance;
+
 
-		
 		public MockModalDataContainer()
 		{
 			Data = new ModalResults();
@@ -221,6 +223,21 @@ namespace TUGraz.VectoCore.Tests.Utils
 			
 		}
 
+		public Second Duration
+		{
+			get { return _duration; }
+		}
+
+		public Meter Distance
+		{
+			get { return _distance; }
+		}
+
+		public KilogramPerWattSecond VehicleLineCorrectionFactor(FuelData.Entry fuel)
+		{
+			return 0.SI<KilogramPerWattSecond>();
+		}
+
 		public string RunName { get; set; }
 		public string CycleName { get; set; }
 		public string RunSuffix { get; set; }