diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
index 132e5a478c2a8b20eeaecb5257e459e23779165a..f3c087df64d22f40d70a59fd3dd6b046a72cf324 100644
--- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
@@ -267,8 +267,19 @@ namespace TUGraz.VectoCore.OutputData
 
 		public static Meter Distance(this IModalDataContainer data)
 		{
-			var max = data.Max<Meter>(ModalResultField.dist);
-			var min = data.Min<Meter>(ModalResultField.dist);
+			var max = data.GetValues<Meter>(ModalResultField.dist).LastOrDefault() ?? 0.SI<Meter>();
+			var first = data.GetValues(
+				r => new {
+					dist = r.Field<Meter>((int)ModalResultField.dist),
+					vact = r.Field<MeterPerSecond>((int)ModalResultField.v_act),
+					acc = r.Field<MeterPerSquareSecond>((int)ModalResultField.acc),
+					dt = r.Field<Second>((int)ModalResultField.simulationInterval)
+				}).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;
 		}
 
diff --git a/VectoCore/VectoCoreTest/Reports/ModDataTest.cs b/VectoCore/VectoCoreTest/Reports/ModDataTest.cs
index 9717eec19852867112ea8a7ad6388600a1266919..aa4ac83fd676e1fae089d2f9807c1c99b4be4954 100644
--- a/VectoCore/VectoCoreTest/Reports/ModDataTest.cs
+++ b/VectoCore/VectoCoreTest/Reports/ModDataTest.cs
@@ -60,6 +60,35 @@ namespace TUGraz.VectoCore.Tests.Reports
 			Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
 		}
 
+		[TestCase(80, 0),
+			TestCase(80, -0.1),
+			TestCase(10, 0.1)]
+		public void SumDataTest(double initialSpeedVal, double accVal)
+		{
+			var modData = new ModalDataContainer("sumDataTest", FuelType.DieselCI, null, false);
+			var initalSpeed = initialSpeedVal.KMPHtoMeterPerSecond();
+			var speed = initalSpeed;
+			var dist = 0.SI<Meter>();
+			var dt = 0.5.SI<Second>();
+			var acc = accVal.SI<MeterPerSquareSecond>();
+			for (var i = 0; i < 100; i++) {
+				modData[ModalResultField.v_act] = speed;
+				modData[ModalResultField.simulationInterval] = dt;
+				modData[ModalResultField.acc] = acc;
+				dist += speed * dt + acc * dt * dt / 2.0;
+				speed += acc * dt;
+				modData[ModalResultField.dist] = dist;
+				modData.CommitSimulationStep();
+			}
+
+			// distance = 80km/h * 50s + acc/2 * 50s * 50s
+			var totalTime = 50.SI<Second>();
+			var expected = initalSpeed * totalTime + acc / 2.0 * totalTime * totalTime;
+
+			Assert.AreEqual(expected.Value(), modData.Distance().Value(), 1e-6);
+		}
+
+
 		[TestCase()]
 		public void ModDataIntegritySimpleTest()
 		{
diff --git a/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs b/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs
index 32689fe80a08e147ac45d5a66b4d9769ee8877cc..55f65e631949f520a9ae96bd9caaf163edfd1220 100644
--- a/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs
+++ b/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs
@@ -65,10 +65,10 @@ namespace TUGraz.VectoCore.Tests.Reports
 
 			modData.AddAuxiliary("FAN");
 
-			for (var i = 0; i < 499; i++) {
+			for (var i = 0; i < 500; i++) {
 				modData[ModalResultField.simulationInterval] = 1.SI<Second>();
 				modData[ModalResultField.n_eng_avg] = 600.RPMtoRad();
-				modData[ModalResultField.v_act] = 20.KMPHtoMeterPerSecond();
+				modData[ModalResultField.v_act] = 1.SI<MeterPerSecond>(); //20.KMPHtoMeterPerSecond();
 				modData[ModalResultField.drivingBehavior] = DrivingBehavior.Driving;
 				modData[ModalResultField.time] = i.SI<Second>();
 				modData[ModalResultField.dist] = i.SI<Meter>();
@@ -97,6 +97,10 @@ 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());
+
 			// 3kW * 500s => to kWh
 			Assert.AreEqual(500.0 * 3000.0 / 1000 / 3600, sumData.Rows[0].ParseDouble("E_air [kWh]"), 1e-3);
 			Assert.AreEqual(500.0 * 3000.0 / 1000 / 3600, sumData.Rows[0].ParseDouble("E_aux_FAN [kWh]"), 1e-3);
@@ -107,8 +111,8 @@ namespace TUGraz.VectoCore.Tests.Reports
 
 			// 500s * 1e-4 kg/s = 0.05kg  => 0.05kg / 500 => to g/h
 			Assert.AreEqual((500.0 * 1e-4) * 1000 * 3600 / 500.0, sumData.Rows[0].ParseDouble("FC-Map [g/h]"), 1e-3);
-			// 500s * 1e-4 kg/s = 0.05kg => 0.05kg / 499m => to g/km
-			Assert.AreEqual((500.0 * 1e-4) * 1000 * 1000 / 499.0, sumData.Rows[0].ParseDouble("FC-Map [g/km]"), 1e-3);
+			// 500s * 1e-4 kg/s = 0.05kg => 0.05kg / 500m => to g/km
+			Assert.AreEqual((500.0 * 1e-4) * 1000 * 1000 / 500, sumData.Rows[0].ParseDouble("FC-Map [g/km]"), 1e-3);
 		}
 
 		[TestCase]