diff --git a/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs b/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs
index 2285f73e081b2229baf3b824fd4e233cf2bf5d27..4181219cc347e36bd634d7aecd1134d0e8440b05 100644
--- a/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs
+++ b/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs
@@ -78,6 +78,7 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		}
 
 		[Category("ComparisonV2"),
+		TestCase(0, 20, -5), TestCase(0, 20, 0),
 		TestCase(0, 40, 25), TestCase(0, 40, 20), TestCase(0, 40, 15),
 		TestCase(0, 40, 10), TestCase(0, 40, 5), TestCase(0, 40, 1),
 		TestCase(0, 40, 0),
@@ -90,7 +91,7 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		TestCase(0, 60, -15), TestCase(0, 60, -20), TestCase(0, 60, -25),
 		TestCase(0, 85, 25), TestCase(0, 85, 20), TestCase(0, 85, 15),
 		TestCase(0, 85, 10), TestCase(0, 85, 5), TestCase(0, 85, 1),
-		TestCase(0, 85, 0),
+		TestCase(0, 85, 0), TestCase(0, 85, 2),
 		TestCase(0, 85, -1), TestCase(0, 85, -5), TestCase(0, 85, -10),
 		TestCase(0, 85, -15), TestCase(0, 85, -20), TestCase(0, 85, -25),
 		TestCase(20, 40, 25), TestCase(20, 40, 20), TestCase(20, 40, 15),
@@ -115,9 +116,8 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 			var cycle = string.Format(CultureInfo.InvariantCulture, "0, {0}, {1}, {2}\n1000, {3}, {4}, {5}", v1, slope,
 				v1.IsEqual(0) ? 2 : 0, v2, slope, v2.IsEqual(0) ? 2 : 0);
 
-			var slopeStr = slope > 0 ? "uhpill" : slope < 0 ? "downhill" : "level";
-			var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{3}_{2}.vmod", v1, v2, Math.Abs(slope),
-				slopeStr);
+			var slopeStr = GetSlopeString(slope);
+			var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{2}.vmod", v1, v2, slopeStr);
 
 			Coach_Special(cycle, modFileName,
 				string.Format(CultureInfo.InvariantCulture, "24t Coach_Cycle_Accelerate_{0}_{1}_{2}.vmod", v1, v2, slopeStr));
@@ -144,6 +144,9 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		TestCase(40, 20, 0),
 		TestCase(40, 20, -1), TestCase(40, 20, -5), TestCase(40, 20, -10),
 		TestCase(40, 20, -15), TestCase(40, 20, -20), TestCase(40, 20, -25),
+		TestCase(45, 0, -5),
+		TestCase(45, 0, 0),
+		TestCase(45, 0, 5),
 		TestCase(60, 20, 25), TestCase(60, 20, 20), TestCase(60, 20, 15),
 		TestCase(60, 20, 10), TestCase(60, 20, 5), TestCase(60, 20, 1),
 		TestCase(60, 20, 0),
@@ -161,9 +164,8 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 			var cycle = string.Format(CultureInfo.InvariantCulture, "0, {0}, {1}, {2}\n1000, {3}, {4}, {5}", v1, slope,
 				v1.IsEqual(0) ? 2 : 0, v2, slope, v2.IsEqual(0) ? 2 : 0);
 
-			var slopeStr = slope > 0 ? "uhpill" : slope < 0 ? "downhill" : "level";
-			var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{3}_{2}.vmod", v1, v2, Math.Abs(slope),
-				slopeStr);
+			var slopeStr = GetSlopeString(slope);
+			var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{2}.vmod", v1, v2, slopeStr);
 
 			Coach_Special(cycle, modFileName,
 				string.Format(CultureInfo.InvariantCulture, "24t Coach_Cycle_Decelerate_{0}_{1}_{2}.vmod", v1, v2, slopeStr));
@@ -216,9 +218,8 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 			var cycle = string.Format(CultureInfo.InvariantCulture, "0, {0}, {1}, {2}\n1000, {3}, {4}, {5}", v1, slope,
 				v1.IsEqual(0) ? 2 : 0, v2, slope, v2.IsEqual(0) ? 2 : 0);
 
-			var slopeStr = slope > 0 ? "uhpill" : slope < 0 ? "downhill" : "level";
-			var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{3}_{2}.vmod", v1, v2, Math.Abs(slope),
-				slopeStr);
+			var slopeStr = GetSlopeString(slope);
+			var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{2}.vmod", v1, v2, slopeStr);
 
 			Coach_Special(cycle, modFileName,
 				string.Format(CultureInfo.InvariantCulture, "24t Coach_Cycle_Drive_{0}_{1}_{2}.vmod", v1, v2, slopeStr));
@@ -227,17 +228,17 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		[Category("ComparisonV2"),
 		TestCase(0, 40, 25), TestCase(0, 40, 20), TestCase(0, 40, 15),
 		TestCase(0, 40, 10), TestCase(0, 40, 5), TestCase(0, 40, 1),
-		TestCase(0, 40, 0),
+		TestCase(0, 40, 0), TestCase(0, 40, -3),
 		TestCase(0, 40, -1), TestCase(0, 40, -5), TestCase(0, 40, -10),
 		TestCase(0, 40, -15), TestCase(0, 40, -20), TestCase(0, 40, -25),
 		TestCase(0, 60, 25), TestCase(0, 60, 20), TestCase(0, 60, 15),
 		TestCase(0, 60, 10), TestCase(0, 60, 5), TestCase(0, 60, 1),
-		TestCase(0, 60, 0),
+		TestCase(0, 60, 0), TestCase(0, 60, -3),
 		TestCase(0, 60, -1), TestCase(0, 60, -5), TestCase(0, 60, -10),
 		TestCase(0, 60, -15), TestCase(0, 60, -20), TestCase(0, 60, -25),
 		TestCase(0, 85, 25), TestCase(0, 85, 20), TestCase(0, 85, 15),
 		TestCase(0, 85, 10), TestCase(0, 85, 5), TestCase(0, 85, 1),
-		TestCase(0, 85, 0),
+		TestCase(0, 85, 0), TestCase(0, 85, -3),
 		TestCase(0, 85, -1), TestCase(0, 85, -5), TestCase(0, 85, -10),
 		TestCase(0, 85, -15), TestCase(0, 85, -20), TestCase(0, 85, -25),
 		TestCase(20, 40, 25), TestCase(20, 40, 20), TestCase(20, 40, 15),
@@ -262,9 +263,8 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 			var cycle = string.Format(CultureInfo.InvariantCulture, "0, {0}, {1}, {2}\n1000, {3}, {4}, {5}", v1, slope,
 				v1.IsEqual(0) ? 2 : 0, v2, slope, v2.IsEqual(0) ? 2 : 0);
 
-			var slopeStr = slope > 0 ? "uhpill" : slope < 0 ? "downhill" : "level";
-			var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{3}_{2}.vmod", v1, v2, Math.Abs(slope),
-				slopeStr);
+			var slopeStr = GetSlopeString(slope);
+			var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{2}.vmod", v1, v2, slopeStr);
 
 			Coach_Special_Overspeed(cycle, modFileName,
 				string.Format(CultureInfo.InvariantCulture, "24t Coach_Cycle_Accelerate_{0}_{1}_{2}.vmod", v1, v2, slopeStr));
@@ -308,14 +308,23 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 			var cycle = string.Format(CultureInfo.InvariantCulture, "0, {0}, {1}, {2}\n1000, {3}, {4}, {5}", v1, slope,
 				v1.IsEqual(0) ? 2 : 0, v2, slope, v2.IsEqual(0) ? 2 : 0);
 
-			var slopeStr = slope > 0 ? "uhpill" : slope < 0 ? "downhill" : "level";
-			var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{3}_{2}.vmod", v1, v2, Math.Abs(slope),
-				slopeStr);
+			var slopeStr = GetSlopeString(slope);
+			var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{2}.vmod", v1, v2, slopeStr);
 
 			Coach_Special_Overspeed(cycle, modFileName,
 				string.Format(CultureInfo.InvariantCulture, "24t Coach_Cycle_Decelerate_{0}_{1}_{2}.vmod", v1, v2, slopeStr));
 		}
 
+		private static string GetSlopeString(double slope)
+		{
+			var slopeStr = slope > 0
+				? Math.Abs(slope).ToString("uphill_#")
+				: slope < 0
+					? Math.Abs(slope).ToString("downhill_#")
+					: "level";
+			return slopeStr;
+		}
+
 		[Category("ComparisonV2"),
 		TestCase(10, 10, 25), TestCase(10, 10, 20), TestCase(10, 10, 15),
 		TestCase(10, 10, 10), TestCase(10, 10, 5), TestCase(10, 10, 1),
@@ -363,9 +372,8 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 			var cycle = string.Format(CultureInfo.InvariantCulture, "0, {0}, {1}, {2}\n1000, {3}, {4}, {5}", v1, slope,
 				v1.IsEqual(0) ? 2 : 0, v2, slope, v2.IsEqual(0) ? 2 : 0);
 
-			var slopeStr = slope > 0 ? "uhpill" : slope < 0 ? "downhill" : "level";
-			var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{3}_{2}.vmod", v1, v2, Math.Abs(slope),
-				slopeStr);
+			var slopeStr = GetSlopeString(slope);
+			var modFileName = string.Format(CultureInfo.InvariantCulture, @"Coach_{0}_{1}_{2}.vmod", v1, v2, slopeStr);
 
 			Coach_Special_Overspeed(cycle, modFileName,
 				string.Format(CultureInfo.InvariantCulture, "24t Coach_Cycle_Drive_{0}_{1}_{2}.vmod", v1, v2, slopeStr));
diff --git a/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs b/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs
index ac5a67786c95c2c558b93110d82d7191d9d840d7..487bdd2867bfa4ee8ab47616ddf37d07f7b57b65 100644
--- a/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs
+++ b/VectoCore/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs
@@ -78,6 +78,7 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		}
 
 		[Category("ComparisonV2"),
+		TestCase(0, 20, -5), TestCase(0, 20, 0),
 		TestCase(0, 40, 25), TestCase(0, 40, 20), TestCase(0, 40, 15),
 		TestCase(0, 40, 10), TestCase(0, 40, 5), TestCase(0, 40, 1),
 		TestCase(0, 40, 0),
@@ -90,7 +91,7 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		TestCase(0, 60, -15), TestCase(0, 60, -20), TestCase(0, 60, -25),
 		TestCase(0, 85, 25), TestCase(0, 85, 20), TestCase(0, 85, 15),
 		TestCase(0, 85, 10), TestCase(0, 85, 5), TestCase(0, 85, 1),
-		TestCase(0, 85, 0),
+		TestCase(0, 85, 0), TestCase(0, 85, 2),
 		TestCase(0, 85, -1), TestCase(0, 85, -5), TestCase(0, 85, -10),
 		TestCase(0, 85, -15), TestCase(0, 85, -20), TestCase(0, 85, -25),
 		TestCase(20, 40, 25), TestCase(20, 40, 20), TestCase(20, 40, 15),
@@ -144,6 +145,9 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		TestCase(40, 20, 0),
 		TestCase(40, 20, -1), TestCase(40, 20, -5), TestCase(40, 20, -10),
 		TestCase(40, 20, -15), TestCase(40, 20, -20), TestCase(40, 20, -25),
+		TestCase(45, 0, -5),
+		TestCase(45, 0, 0),
+		TestCase(45, 0, 5),
 		TestCase(60, 20, 25), TestCase(60, 20, 20), TestCase(60, 20, 15),
 		TestCase(60, 20, 10), TestCase(60, 20, 5), TestCase(60, 20, 1),
 		TestCase(60, 20, 0),
@@ -227,17 +231,17 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		[Category("ComparisonV2"),
 		TestCase(0, 40, 25), TestCase(0, 40, 20), TestCase(0, 40, 15),
 		TestCase(0, 40, 10), TestCase(0, 40, 5), TestCase(0, 40, 1),
-		TestCase(0, 40, 0),
+		TestCase(0, 40, 0), TestCase(0, 40, -3),
 		TestCase(0, 40, -1), TestCase(0, 40, -5), TestCase(0, 40, -10),
 		TestCase(0, 40, -15), TestCase(0, 40, -20), TestCase(0, 40, -25),
 		TestCase(0, 60, 25), TestCase(0, 60, 20), TestCase(0, 60, 15),
 		TestCase(0, 60, 10), TestCase(0, 60, 5), TestCase(0, 60, 1),
-		TestCase(0, 60, 0),
+		TestCase(0, 60, 0), TestCase(0, 60, -3),
 		TestCase(0, 60, -1), TestCase(0, 60, -5), TestCase(0, 60, -10),
 		TestCase(0, 60, -15), TestCase(0, 60, -20), TestCase(0, 60, -25),
 		TestCase(0, 85, 25), TestCase(0, 85, 20), TestCase(0, 85, 15),
 		TestCase(0, 85, 10), TestCase(0, 85, 5), TestCase(0, 85, 1),
-		TestCase(0, 85, 0),
+		TestCase(0, 85, 0), TestCase(0, 85, -3),
 		TestCase(0, 85, -1), TestCase(0, 85, -5), TestCase(0, 85, -10),
 		TestCase(0, 85, -15), TestCase(0, 85, -20), TestCase(0, 85, -25),
 		TestCase(20, 40, 25), TestCase(20, 40, 20), TestCase(20, 40, 15),
diff --git a/VectoCore/VectoCoreTest/Utils/GraphWriter.cs b/VectoCore/VectoCoreTest/Utils/GraphWriter.cs
index 7a9dad5aae87405bb21bb0d48f41e684db363d0c..fa610c1c2c1fa75adc6a90cdc4081f2cb156d7e5 100644
--- a/VectoCore/VectoCoreTest/Utils/GraphWriter.cs
+++ b/VectoCore/VectoCoreTest/Utils/GraphWriter.cs
@@ -41,6 +41,8 @@ using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Utils;
 
+// ReSharper disable UnusedVariable
+
 namespace TUGraz.VectoCore.Tests.Utils
 {
 	public static class GraphWriter
@@ -86,11 +88,10 @@ namespace TUGraz.VectoCore.Tests.Utils
 				//return;
 			}
 			DataTable modDataV22 = null;
-			if (fileNameV22 != null) {
+			if (!string.IsNullOrWhiteSpace(fileNameV22) && File.Exists(fileNameV22))
 				modDataV22 = VectoCSVFile.Read(fileNameV22);
-			}
 
-			var titleHeight = (50 * 100.0f) / (_diagramSize.Height * Yfields.Count());
+			var titleHeight = (50 * 100.0f) / (_diagramSize.Height * Yfields.Length);
 
 			foreach (var xfield in Xfields) {
 				var fileName = string.Format("{0}_{1}.png", Path.GetFileNameWithoutExtension(fileNameV3),
@@ -101,7 +102,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 				if (fileNameV22 != null && modDataV22 != null) {
 					x2 = LoadData(modDataV22, xfield.GetName());
 				}
-				var plotSize = new Size(_diagramSize.Width, _diagramSize.Height * Yfields.Count());
+				var plotSize = new Size(_diagramSize.Width, _diagramSize.Height * Yfields.Length);
 				var maxX = (int)(Math.Ceiling(Math.Max(x.Max(), x2.Max()) * 1.01 / 10.0) * 10.0);
 				var minX = (int)(Math.Floor(Math.Max(x.Min(), x2.Min()) / 10.0) * 10.0);
 				var chart = new Chart { Size = plotSize };
@@ -177,7 +178,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 							y2);
 					}
 
-					PositionChartArea(chartArea, titleHeight, i, Yfields.Count());
+					PositionChartArea(chartArea, titleHeight, i, Yfields.Length);
 
 					if (i > 0) {
 						AlignChart(chart, yfield.ToString(), Yfields[0].ToString());
@@ -220,7 +221,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 			//    RowFilter = string.Format(@"dist > {0} AND dist < {1}", start, end)
 			//};
 			//var modDataV3 = modDataV3View.ToTable();
-			var modDataV3tmp = modDataV3Iput.AsEnumerable().Where(row => {
+			var modDataV3Tmp = modDataV3Iput.AsEnumerable().Where(row => {
 				var s = row.ParseDouble("dist");
 				return s >= start && s <= end;
 			});
@@ -236,20 +237,20 @@ namespace TUGraz.VectoCore.Tests.Utils
 				//var modDataV22View = new DataView(modDataV22Input) {
 				//    RowFilter = string.Format(@"dist > {0} AND dist < {1}", start, end)
 				//};
-				var modDataV22tmp = modDataV22Input.AsEnumerable().Where(row => {
+				var modDataV22Tmp = modDataV22Input.AsEnumerable().Where(row => {
 					var s = row.ParseDouble("dist");
 					return s >= start && s <= end;
 				});
-				if (!(modDataV3tmp.Any() || modDataV22tmp.Any())) {
+				if (!(modDataV3Tmp.Any() || modDataV22Tmp.Any())) {
 					return false;
 				}
-				modDataV22 = modDataV22tmp.CopyToDataTable();
+				modDataV22 = modDataV22Tmp.CopyToDataTable();
 			} else {
-				if (!modDataV3tmp.Any()) {
+				if (!modDataV3Tmp.Any()) {
 					return false;
 				}
 			}
-			var modDataV3 = modDataV3tmp.CopyToDataTable();
+			var modDataV3 = modDataV3Tmp.CopyToDataTable();
 
 			//var xfields = new[] { ModalResultField.dist };
 			var xfield = ModalResultField.dist;
@@ -258,18 +259,18 @@ namespace TUGraz.VectoCore.Tests.Utils
 				ModalResultField.P_eng_out, ModalResultField.T_eng_fcmap, ModalResultField.FCMap
 			};
 
-			var titleHeight = (50 * 100.0f) / (_diagramSize.Height * yfields.Count());
+			var titleHeight = (50 * 100.0f) / (_diagramSize.Height * yfields.Length);
 
 			//foreach (var xfield in xfields) {
 			var fileName = string.Format("{0}_{1}-{2:D3}_{3:D3}.png", Path.GetFileNameWithoutExtension(fileNameV3),
 				xfield.GetName(), (int)(start / 1000), (int)(end / 1000));
 
 			var x = LoadData(modDataV3, xfield.GetName());
-			var x2 = new double[] { double.NegativeInfinity };
+			var x2 = new[] { double.NegativeInfinity };
 			if (fileNameV22 != null && modDataV22 != null) {
 				x2 = LoadData(modDataV22, xfield.GetName());
 			}
-			var plotSize = new Size(_diagramSize.Width, _diagramSize.Height * yfields.Count());
+			var plotSize = new Size(_diagramSize.Width, _diagramSize.Height * yfields.Length);
 			var maxX = (int)(Math.Ceiling(Math.Max(x.Max(), x2.Max()) * 1.01 / 10.0) * 10.0);
 			var minX = (int)(Math.Floor(Math.Max(x.Min(), x2.Min()) / 10.0) * 10.0);
 			var chart = new Chart { Size = plotSize };
@@ -315,7 +316,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 						Color.Red, x2, y2);
 				}
 
-				PositionChartArea(chartArea, titleHeight, i, yfields.Count());
+				PositionChartArea(chartArea, titleHeight, i, yfields.Length);
 
 				if (i > 0) {
 					AlignChart(chart, yfield.ToString(), yfields[0].ToString());
@@ -332,11 +333,12 @@ namespace TUGraz.VectoCore.Tests.Utils
 
 		private static void AddTitle(Chart chart, string titleText, string dockToChartArea)
 		{
-			var title = new Title();
-			title.Text = titleText;
-			title.DockedToChartArea = dockToChartArea;
-			title.IsDockedInsideChartArea = false;
-			title.Font = new Font("Verdana", 18, FontStyle.Bold);
+			var title = new Title {
+				Text = titleText,
+				DockedToChartArea = dockToChartArea,
+				IsDockedInsideChartArea = false,
+				Font = new Font("Verdana", 18, FontStyle.Bold)
+			};
 			chart.Titles.Add(title);
 		}
 
@@ -410,7 +412,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 
 		private static Legend CreateLegend(Chart chart, string dockToChartArea)
 		{
-			var legend = new Legend(dockToChartArea.ToString()) {
+			var legend = new Legend(dockToChartArea) {
 				Docking = Docking.Right,
 				IsDockedInsideChartArea = false,
 				DockedToChartArea = dockToChartArea,