diff --git a/VectoCore/Models/Simulation/Data/IModalDataWriter.cs b/VectoCore/Models/Simulation/Data/IModalDataWriter.cs
index 2af509e9bb7789deef42998d625d58dbcbd80c4c..0d5ee7fc98e72dde72f5325b8e116459c888f67d 100644
--- a/VectoCore/Models/Simulation/Data/IModalDataWriter.cs
+++ b/VectoCore/Models/Simulation/Data/IModalDataWriter.cs
@@ -2,6 +2,7 @@ using System;
 using System.Collections.Generic;
 using System.Data;
 using System.Linq;
+using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Models.Simulation.Data
@@ -29,10 +30,13 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 		/// </summary>
 		void CommitSimulationStep();
 
+		VectoRun.Status RunStatus { get; }
+
+
 		/// <summary>
 		/// Finishes the writing of the DataWriter.
 		/// </summary>
-		void Finish();
+		void Finish(VectoRun.Status runStatus);
 
 		bool WriteModalResults { get; set; }
 
diff --git a/VectoCore/Models/Simulation/Data/ModalDataWriter.cs b/VectoCore/Models/Simulation/Data/ModalDataWriter.cs
index cfc9e766e2466c7a62a01fd91d43348e93f657cd..89cb858be6a8572875bc5e9528120af69f0265de 100644
--- a/VectoCore/Models/Simulation/Data/ModalDataWriter.cs
+++ b/VectoCore/Models/Simulation/Data/ModalDataWriter.cs
@@ -17,6 +17,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 
 		public bool WriteModalResults { get; set; }
 
+		public VectoRun.Status RunStatus { get; protected set; }
 
 		public ModalDataWriter(string modFileName,
 			SimulatorFactory.FactoryMode mode = SimulatorFactory.FactoryMode.EngineeringMode) : this(modFileName, _ => {}, mode) {}
@@ -41,10 +42,12 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 			CurrentRow = Data.NewRow();
 		}
 
-		public void Finish()
+		public void Finish(VectoRun.Status runStatus)
 		{
 			var dataColumns = new List<ModalResultField> { ModalResultField.time };
 
+			RunStatus = runStatus;
+
 			if (_mode != SimulatorFactory.FactoryMode.EngineOnlyMode) {
 				dataColumns.AddRange(new[] {
 					ModalResultField.simulationInterval,
diff --git a/VectoCore/Models/Simulation/Data/SummaryFileWriter.cs b/VectoCore/Models/Simulation/Data/SummaryFileWriter.cs
index c01860bdd82ff7c18a7c9c8ab4b59308ab108d78..d777f6648539365f8f49d4e1fe45de309710a581 100644
--- a/VectoCore/Models/Simulation/Data/SummaryFileWriter.cs
+++ b/VectoCore/Models/Simulation/Data/SummaryFileWriter.cs
@@ -14,12 +14,13 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 	/// <summary>
 	/// Class for the sum file in vecto.
 	/// </summary>
-	public class SummaryFileWriter
+	public class SummaryFileWriter : LoggingObject
 	{
 		// ReSharper disable InconsistentNaming
 		private const string JOB = "Job [-]";
 		private const string INPUTFILE = "Input File [-]";
 		private const string CYCLE = "Cycle [-]";
+		private const string STATUS = "Status";
 		private const string TIME = "time [s]";
 		private const string DISTANCE = "distance [km]";
 		private const string SPEED = "speed [km/h]";
@@ -82,6 +83,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 			_table.Columns.Add(JOB, typeof(string));
 			_table.Columns.Add(INPUTFILE, typeof(string));
 			_table.Columns.Add(CYCLE, typeof(string));
+			_table.Columns.Add(STATUS, typeof(string));
 
 			_table.Columns.AddRange(new[] {
 				TIME, DISTANCE, SPEED, ALTITUDE, PPOS, PNEG, FCMAP, FCMAPKM, FCAUXC, FCAUXCKM, FCWHTCC, FCWHTCCKM, PWHEELPOS, PBRAKE,
@@ -97,6 +99,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 			row[JOB] = jobName;
 			row[INPUTFILE] = jobFileName;
 			row[CYCLE] = cycleFileName;
+			row[STATUS] = data.RunStatus;
 			row[TIME] = data.GetValues<SI>(ModalResultField.time).Max();
 			row[PPOS] = data.GetValues<SI>(ModalResultField.Pe_eng).Where(x => x > 0).Average();
 			row[PNEG] = data.GetValues<SI>(ModalResultField.Pe_eng).Where(x => x < 0).Average();
@@ -149,6 +152,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 			row[JOB] = jobName;
 			row[INPUTFILE] = jobFileName;
 			row[CYCLE] = cycleFileName;
+			row[STATUS] = data.RunStatus;
 			row[TIME] = time; //data.Max(ModalResultField.time).DefaultIfNull();
 			row[DISTANCE] = distance.ConvertTo().Kilo.Meter; //data.Max(ModalResultField.dist).DefaultIfNull();
 			row[SPEED] = (distance / time).ConvertTo().Kilo.Meter.Per.Hour;
@@ -283,9 +287,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 			var dataColumns = new List<string>();
 
 			if (_engineOnly) {
-				dataColumns.AddRange(new[] { JOB, INPUTFILE, CYCLE, TIME, PPOS, PNEG, FCMAP, FCAUXC, FCWHTCC });
+				dataColumns.AddRange(new[] { JOB, INPUTFILE, CYCLE, STATUS, TIME, PPOS, PNEG, FCMAP, FCAUXC, FCWHTCC });
 			} else {
-				dataColumns.AddRange(new[] { JOB, INPUTFILE, CYCLE, TIME, DISTANCE, SPEED, ALTITUDE });
+				dataColumns.AddRange(new[] { JOB, INPUTFILE, CYCLE, STATUS, TIME, DISTANCE, SPEED, ALTITUDE });
 
 				dataColumns.AddRange(_auxColumns);
 
@@ -322,6 +326,7 @@ public class SumWriterDecoratorFullPowertrain : SummaryFileWriter, ISummaryDataW
 
 	public void Write(IModalDataWriter data, Kilogram vehicleMass = null, Kilogram vehicleLoading = null)
 	{
+		Log.Info("Writing Summary File");
 		_writer.WriteFullPowertrain(data, _jobFileName, _jobName, _cycleFileName, vehicleMass, vehicleLoading);
 	}
 }
diff --git a/VectoCore/Models/Simulation/IVehicleContainer.cs b/VectoCore/Models/Simulation/IVehicleContainer.cs
index ae3d7cf8f9c5d72d80ccf368342df2bd747d4be3..9f12971f3211bafe0e510a57fa4de4e5a6891923 100644
--- a/VectoCore/Models/Simulation/IVehicleContainer.cs
+++ b/VectoCore/Models/Simulation/IVehicleContainer.cs
@@ -1,5 +1,6 @@
 using TUGraz.VectoCore.Models.Connector.Ports;
 using TUGraz.VectoCore.Models.Simulation.DataBus;
+using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent;
 using TUGraz.VectoCore.Utils;
 
@@ -28,5 +29,7 @@ namespace TUGraz.VectoCore.Models.Simulation
 		/// Finishes the simulation.
 		/// </summary>
 		void FinishSimulation();
+
+		VectoRun.Status RunStatus { get; set; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/Models/Simulation/Impl/JobContainer.cs b/VectoCore/Models/Simulation/Impl/JobContainer.cs
index cb123fd98a5a78cc31135374fa528b8f186ddc14..e6e7c135834f5c656e46aa04d5264e5ab001da43 100644
--- a/VectoCore/Models/Simulation/Impl/JobContainer.cs
+++ b/VectoCore/Models/Simulation/Impl/JobContainer.cs
@@ -82,7 +82,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			}
 			//Task.WaitAll(_runs.Select(r => Task.Factory.StartNew(r.Run)).ToArray());
 
-			_sumWriter.Finish();
+			//_sumWriter.Finish();
 		}
 
 		public void Cancel()
diff --git a/VectoCore/Models/Simulation/Impl/VectoRun.cs b/VectoCore/Models/Simulation/Impl/VectoRun.cs
index 35330fb38abf528b0a86406a7496670cb2236c12..b570be7764ec04d7bd881b513ec528a305b55ea5 100644
--- a/VectoCore/Models/Simulation/Impl/VectoRun.cs
+++ b/VectoCore/Models/Simulation/Impl/VectoRun.cs
@@ -29,6 +29,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		protected VectoRun(IVehicleContainer container)
 		{
 			Container = container;
+			Container.RunStatus = Status.Pending;
 			CyclePort = container.GetCycleOutPort();
 		}
 
@@ -55,6 +56,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 						worker.ReportProgress((int)(CyclePort.Progress * 10000));
 						if (worker.CancellationPending) {
 							Log.Error("Background Task canceled!");
+							Container.RunStatus = Status.Canceled;
 							Container.FinishSimulation();
 							return;
 						}
@@ -63,22 +65,26 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			} catch (VectoSimulationException vse) {
 				Log.Error("SIMULATION RUN ABORTED! ========================");
 				Log.Error(vse);
+				Container.RunStatus = Status.Aborted;
 				Container.FinishSimulation();
 				throw new VectoSimulationException("{6} - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", vse,
 					AbsTime, Container.Distance, dt, Container.VehicleSpeed, Container.Gear, vse.Message, Name);
 			} catch (VectoException ve) {
 				Log.Error("SIMULATION RUN ABORTED! ========================");
 				Log.Error(ve);
+				Container.RunStatus = Status.Aborted;
 				Container.FinishSimulation();
 				throw new VectoSimulationException("{6} - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", ve,
 					AbsTime, Container.Distance, dt, Container.VehicleSpeed, Container.Gear, ve.Message, Name);
 			} catch (Exception e) {
 				Log.Error("SIMULATION RUN ABORTED! ========================");
 				Log.Error(e);
+				Container.RunStatus = Status.Aborted;
 				Container.FinishSimulation();
 				throw new VectoSimulationException("{6} - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", e, AbsTime,
 					Container.Distance, dt, Container.VehicleSpeed, Container.Gear, e.Message, Name);
 			}
+			Container.RunStatus = Status.Success;
 			Container.FinishSimulation();
 			Log.Info("VectoJob finished.");
 		}
@@ -86,5 +92,14 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		protected abstract IResponse DoSimulationStep();
 
 		protected abstract IResponse Initialize();
+
+		public enum Status
+		{
+			Pending,
+			Running,
+			Success,
+			Canceled,
+			Aborted,
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/Models/Simulation/Impl/VehicleContainer.cs b/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
index 59b9a6d8724f9cc4fcfe727b02c0de9d69be5770..9d6e2400875fd9bcfc2617bd20409c4ae0f30ef6 100644
--- a/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
+++ b/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
@@ -211,11 +211,13 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		public void FinishSimulation()
 		{
 			Log.Info("VehicleContainer finishing simulation.");
-			DataWriter.Finish();
+			DataWriter.Finish(RunStatus);
 
 			SumWriter.Write(DataWriter, VehicleMass, VehicleLoading);
 		}
 
+		public VectoRun.Status RunStatus { get; set; }
+
 		#endregion
 
 		public IReadOnlyCollection<VectoSimulationComponent> SimulationComponents()
diff --git a/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs b/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs
index 751d0df538444d9f95af24050889f3f50c47183b..7395499c42ed5e4a587650611255b2218e89b0a3 100644
--- a/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs
+++ b/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs
@@ -58,7 +58,7 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle
 				dataWriter.CommitSimulationStep();
 				absTime += dt;
 			}
-			dataWriter.Finish();
+			dataWriter.Finish(VectoRun.Status.Success);
 
 			ResultFileHelper.TestModFile(TestContext.DataRow["ModalResultFile"].ToString(), modFile);
 		}
diff --git a/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs b/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
index aba67766a058edf29b058260e153e229ebe241f4..59fbf39518a7d71b76fd7d6adea6d33b6ed36b1f 100644
--- a/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
+++ b/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
@@ -85,12 +85,12 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 							: Constants.SimulationSettings.TargetTimeInterval * container.VehicleSpeed;
 
 						if (cnt++ % 100 == 0) {
-							modalWriter.Finish();
+							modalWriter.Finish(VectoRun.Status.Success);
 						}
 					}).
 					Default(r => Assert.Fail("Unexpected Response: {0}", r));
 			} while (!(response is ResponseCycleFinished));
-			modalWriter.Finish();
+			modalWriter.Finish(VectoRun.Status.Success);
 			Assert.IsInstanceOfType(response, typeof(ResponseCycleFinished));
 		}
 
@@ -141,7 +141,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				try {
 					response = cyclePort.Request(absTime, ds);
 				} catch (Exception) {
-					modalWriter.Finish();
+					modalWriter.Finish(VectoRun.Status.Success);
 					throw;
 				}
 				Log.Info("Test Got Response: {0},", response);
@@ -161,12 +161,12 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 							: Constants.SimulationSettings.TargetTimeInterval * container.VehicleSpeed;
 
 						if (cnt++ % 100 == 0) {
-							modalWriter.Finish();
+							modalWriter.Finish(VectoRun.Status.Success);
 						}
 					}).
 					Default(r => Assert.Fail("Unexpected Response: {0}", r));
 			}
-			modalWriter.Finish();
+			modalWriter.Finish(VectoRun.Status.Success);
 			Assert.IsInstanceOfType(response, typeof(ResponseCycleFinished));
 		}
 
@@ -215,7 +215,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				try {
 					response = cyclePort.Request(absTime, ds);
 				} catch (Exception) {
-					modalWriter.Finish();
+					modalWriter.Finish(VectoRun.Status.Success);
 					throw;
 				}
 				Log.Info("Test Got Response: {0},", response);
@@ -235,15 +235,15 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 							: Constants.SimulationSettings.TargetTimeInterval * container.VehicleSpeed;
 
 						if (cnt++ % 100 == 0) {
-							modalWriter.Finish();
+							modalWriter.Finish(VectoRun.Status.Success);
 						}
 					}).
 					Default(r => {
-						modalWriter.Finish();
+						modalWriter.Finish(VectoRun.Status.Success);
 						Assert.Fail("Unexpected Response: {0}", r);
 					});
 			}
-			modalWriter.Finish();
+			modalWriter.Finish(VectoRun.Status.Success);
 			Assert.IsInstanceOfType(response, typeof(ResponseCycleFinished));
 		}
 
diff --git a/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs b/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
index e0099a5c78ab8e78affba1c648af26d2b94c60e1..71ce21f52414488a5f59d926bc674fb0bbf5ac53 100644
--- a/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
+++ b/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
@@ -143,7 +143,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 							: (Constants.SimulationSettings.TargetTimeInterval * vehicleContainer.VehicleSpeed).Cast<Meter>();
 
 						if (cnt++ % 100 == 0) {
-							modalWriter.Finish();
+							modalWriter.Finish(VectoRun.Status.Success);
 						}
 					}).
 					Default(r => Assert.Fail("Unexpected Response: {0}", r));
@@ -151,7 +151,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 
 			Assert.IsInstanceOfType(response, typeof(ResponseCycleFinished));
 
-			modalWriter.Finish();
+			modalWriter.Finish(VectoRun.Status.Success);
 		}
 
 		[TestMethod]
@@ -208,11 +208,11 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 							? Constants.SimulationSettings.DriveOffDistance
 							: (Constants.SimulationSettings.TargetTimeInterval * vehicleContainer.VehicleSpeed).Cast<Meter>();
 
-						modalWriter.Finish();
+						modalWriter.Finish(VectoRun.Status.Success);
 					});
 			}
 
-			modalWriter.Finish();
+			modalWriter.Finish(VectoRun.Status.Success);
 		}
 
 		private static GearData CreateAxleGearData()
diff --git a/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs b/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
index 7a52652f53aeb457fe0a9006a374972a1dcbf654..c2ee3a17b21063a920bc7b90ee6d86719cbc1f00 100644
--- a/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
+++ b/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
@@ -201,7 +201,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 					string.Format("Load in timestep {0}", t));
 				modalData.CommitSimulationStep();
 			}
-			modalData.Finish();
+			modalData.Finish(VectoRun.Status.Success);
 		}
 
 		[TestMethod]
diff --git a/VectoCoreTest/Models/SimulationComponent/DriverTest.cs b/VectoCoreTest/Models/SimulationComponent/DriverTest.cs
index b62b473de3f1351cbf1307b90ef0acd3b6d7beaf..003a61f76de5a56125c2cb0c0f6cd8024361a666 100644
--- a/VectoCoreTest/Models/SimulationComponent/DriverTest.cs
+++ b/VectoCoreTest/Models/SimulationComponent/DriverTest.cs
@@ -82,9 +82,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 
 				vehicleContainer.CommitSimulationStep(absTime, response.SimulationInterval);
 				absTime += response.SimulationInterval;
-				modalWriter.Finish();
+				modalWriter.Finish(VectoRun.Status.Success);
 			}
-			modalWriter.Finish();
+			modalWriter.Finish(VectoRun.Status.Success);
 		}
 
 		[TestMethod]
@@ -141,9 +141,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 
 				vehicleContainer.CommitSimulationStep(absTime, response.SimulationInterval);
 				absTime += response.SimulationInterval;
-				modalWriter.Finish();
+				modalWriter.Finish(VectoRun.Status.Success);
 			}
-			modalWriter.Finish();
+			modalWriter.Finish(VectoRun.Status.Success);
 		}
 
 
diff --git a/VectoCoreTest/Utils/MockModalDataWriter.cs b/VectoCoreTest/Utils/MockModalDataWriter.cs
index 19d073b91c6fdf3a9db3486eabe77674b3ae3761..aae84d3008e33be35b2b33f2311c1c9fa7fb7ea3 100644
--- a/VectoCoreTest/Utils/MockModalDataWriter.cs
+++ b/VectoCoreTest/Utils/MockModalDataWriter.cs
@@ -2,6 +2,7 @@ using System.Collections.Generic;
 using System.Data;
 using System.Linq;
 using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Tests.Utils
@@ -35,7 +36,13 @@ namespace TUGraz.VectoCore.Tests.Utils
 			CurrentRow = Data.NewRow();
 		}
 
-		public void Finish() {}
+		public VectoRun.Status RunStatus
+		{
+			get { return VectoRun.Status.Success; }
+		}
+
+
+		public void Finish(VectoRun.Status runStatus) {}
 
 		public bool WriteModalResults { get; set; }