diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdaper/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdaper/DeclarationDataAdapter.cs
index 33966847e518f1c1c37e36c20efe0288e4e07bd3..543ed3b31f2083156cdf618f189429017e8a1b98 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdaper/DeclarationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdaper/DeclarationDataAdapter.cs
@@ -278,6 +278,13 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdaper
 		public static List<CrossWindCorrectionCurveReader.CrossWindCorrectionEntry> GetDeclarationAirResistanceCurve(
 			VehicleCategory vehicleCategory, SquareMeter aerodynamicDragAera)
 		{
+			const int startSpeed = 60;
+			const int maxSpeed = 130;
+			const int speedStep = 5;
+
+			const int maxAlpha = 180;
+			const int alphaStep = 10;
+
 			var values = DeclarationData.AirDrag.Lookup(vehicleCategory);
 			var points = new List<CrossWindCorrectionCurveReader.CrossWindCorrectionEntry> {
 				new CrossWindCorrectionCurveReader.CrossWindCorrectionEntry {
@@ -285,22 +292,24 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdaper
 					EffectiveCrossSectionArea = 0.SI<SquareMeter>()
 				}
 			};
-			for (var speed = 60; speed <= 100; speed += 5) {
+
+			for (var speed = startSpeed; speed <= maxSpeed; speed += speedStep) {
 				var vVeh = speed.KMPHtoMeterPerSecond();
 				var cdASum = 0.0.SI<SquareMeter>();
-				for (var alpha = 0; alpha <= 180; alpha += 10) {
+
+				for (var alpha = 0; alpha <= maxAlpha; alpha += alphaStep) {
 					var vWindX = Physics.BaseWindSpeed * Math.Cos(alpha.ToRadian());
 					var vWindY = Physics.BaseWindSpeed * Math.Sin(alpha.ToRadian());
 					var vAirX = vVeh + vWindX;
 					var vAirY = vWindY;
-//					var vAir = VectoMath.Sqrt<MeterPerSecond>(vAirX * vAirX + vAirY * vAirY);
 					var beta = Math.Atan((vAirY / vAirX).Value()).ToDegree();
 					var deltaCdA = ComputeDeltaCd(beta, values);
 					var cdA = aerodynamicDragAera + deltaCdA;
 
-					var degreeShare = ((alpha != 0 && alpha != 180) ? 10.0 / 180.0 : 5.0 / 180.0);
+					var degreeShare = (double)alphaStep / maxAlpha;
+					if (alpha == 0 || alpha == maxAlpha)
+						degreeShare /= 2;
 
-//					cdASum += degreeShare * cdA * (vAir * vAir / (vVeh * vVeh)).Cast<Scalar>();
 					cdASum += degreeShare * cdA * ((vAirX * vAirX + vAirY * vAirY) / (vVeh * vVeh)).Cast<Scalar>();
 				}
 				points.Add(new CrossWindCorrectionCurveReader.CrossWindCorrectionEntry {
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/CrossWindCorrectionCurveReader.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/CrossWindCorrectionCurveReader.cs
index a85875497dc40ca840f44f43b79256803965ff96..8b401ad19e6b91a5c09c96b0b9c82265228f8064 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/CrossWindCorrectionCurveReader.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/CrossWindCorrectionCurveReader.cs
@@ -50,7 +50,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 					EffectiveCrossSectionArea = aerodynamicDragArea
 				},
 				new CrossWindCorrectionEntry {
-					Velocity = 150.KMPHtoMeterPerSecond(),
+					Velocity = 130.KMPHtoMeterPerSecond(),
 					EffectiveCrossSectionArea = aerodynamicDragArea
 				}
 			}.ToList();
@@ -91,8 +91,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 			return ParseCdxABetaFromColumnIndices(betaTable);
 		}
 
-		protected static List<CrossWindCorrectionEntry> ParseSpeedDependent(DataTable data,
-			SquareMeter aerodynamicDragArea)
+		protected static List<CrossWindCorrectionEntry> ParseSpeedDependent(DataTable data, SquareMeter aerodynamicDragArea)
 		{
 			if (data.Columns.Count != 2) {
 				throw new VectoException("Crosswind correction file must consist of 2 columns.");
@@ -112,8 +111,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 			return ParseSpeedDependentFromColumnIndizes(data, aerodynamicDragArea);
 		}
 
-		protected static List<CrossWindCorrectionCurveReader.CrossWindCorrectionEntry> ParseSpeedDependentFromColumnIndizes(
-			DataTable data,
+		protected static List<CrossWindCorrectionEntry> ParseSpeedDependentFromColumnIndizes(DataTable data,
 			SquareMeter aerodynamicDragArea)
 		{
 			return (from DataRow row in data.Rows
@@ -123,8 +121,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 				}).ToList();
 		}
 
-		protected static List<CrossWindCorrectionCurveReader.CrossWindCorrectionEntry> ParseSpeedDependentFromColumnNames(
-			DataTable data,
+		protected static List<CrossWindCorrectionEntry> ParseSpeedDependentFromColumnNames(DataTable data,
 			SquareMeter aerodynamicDragArea)
 		{
 			return (from DataRow row in data.Rows
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/CrosswindCorrectionCdxALookup.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/CrosswindCorrectionCdxALookup.cs
index 9e29d58e916a96ec70edb0e445c5222f4949abc6..0c089b04af8c936f95e83a0aa172361735abb4e6 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/CrosswindCorrectionCdxALookup.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/CrosswindCorrectionCdxALookup.cs
@@ -30,6 +30,7 @@
 */
 
 using System.Collections.Generic;
+using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.Simulation.DataBus;
@@ -68,11 +69,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		{
 			var p = Entries.GetSection(c => c.Velocity < x);
 
-			if (x < p.Item1.Velocity || p.Item2.Velocity < x) {
-				//Log.Error(_data.CrossWindCorrectionMode == CrossWindCorrectionMode.VAirBetaLookupTable
-				//    ? string.Format("CdExtrapol β = {0}", x)
-				//    : string.Format("CdExtrapol v = {0}", x));
-				Log.Error("CrossWindCorrection Extrapolation: v = {0} (max = {1})", x.ConvertTo().Kilo.Meter.Per.Hour,
+			if (!x.IsBetween(p.Item1.Velocity, p.Item2.Velocity)) {
+				throw new VectoException("CrossWindCorrection Extrapolation: v = {0} (max = {1})", x.ConvertTo().Kilo.Meter.Per.Hour,
 					p.Item2.Velocity.ConvertTo().Kilo.Meter.Per.Hour);
 			}
 
diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
index 0cbf0383c1918dee086aa9da10be736c297caf78..9c5d7a9b427b5f28686bbeb33d253c3a894a77f1 100644
--- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
+++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
@@ -173,14 +173,19 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 			}
 		}
 
-		[Test,
-		TestCase(VehicleCategory.Tractor, 6.46, 0, 8.12204),
-		TestCase(VehicleCategory.Tractor, 6.46, 60, 8.12204),
-		TestCase(VehicleCategory.Tractor, 6.46, 75, 7.67058),
-		TestCase(VehicleCategory.Tractor, 6.46, 100, 7.23735),
-		TestCase(VehicleCategory.Tractor, 6.46, 52.1234, 8.12196),
-		TestCase(VehicleCategory.Tractor, 6.46, 73.5432, 7.70815),
-		TestCase(VehicleCategory.Tractor, 6.46, 92.8765, 7.33443),
+		[
+			TestCase(VehicleCategory.Tractor, 6.46, 0, 8.12204),
+			TestCase(VehicleCategory.Tractor, 6.46, 60, 8.12204),
+			TestCase(VehicleCategory.Tractor, 6.46, 75, 7.67058),
+			TestCase(VehicleCategory.Tractor, 6.46, 100, 7.23735),
+			TestCase(VehicleCategory.Tractor, 6.46, 52.1234, 8.12196),
+			TestCase(VehicleCategory.Tractor, 6.46, 73.5432, 7.70815),
+			TestCase(VehicleCategory.Tractor, 6.46, 92.8765, 7.33443),
+			TestCase(VehicleCategory.Tractor, 6.46, 100.449, 7.2321466),
+			TestCase(VehicleCategory.Tractor, 6.46, 103, 7.2025564),
+			TestCase(VehicleCategory.Tractor, 6.46, 105, 7.17936),
+			TestCase(VehicleCategory.Tractor, 6.46, 115, 7.08174),
+			TestCase(VehicleCategory.Tractor, 6.46, 130, 6.96979),
 		]
 		public void CrossWindCorrectionTest(VehicleCategory vehicleCategory, double crossSectionArea, double kmph,
 			double expected)
@@ -193,6 +198,20 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 			Assert.AreEqual(expected, tmp.Value(), Tolerance);
 		}
 
+		[
+			TestCase(VehicleCategory.Tractor, 6.46, -0.1),
+			TestCase(VehicleCategory.Tractor, 6.46, 130.1),
+		]
+		public void CrossWindCorrectionExceptionTest(VehicleCategory vehicleCategory, double crossSectionArea, double kmph)
+		{
+			var crossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(
+				DeclarationDataAdapter.GetDeclarationAirResistanceCurve(vehicleCategory, crossSectionArea.SI<SquareMeter>()),
+				CrossWindCorrectionMode.DeclarationModeCorrection);
+
+			AssertHelper.Exception<VectoException>(() =>
+				crossWindCorrectionCurve.EffectiveAirDragArea(kmph.KMPHtoMeterPerSecond()));
+		}
+
 		[Test,
 		// fixed points
 		TestCase(150, 1.000, 1.000, 0.00),