diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
index 8cc4e89534bb39bb260548123a546cb77b4d26df..30a70b1a2ff888ba1101cb5573db7ff8515661c5 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
@@ -370,12 +370,18 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			var es = new ElectricSystem(container);
 
 			if (data.BatteryData != null) {
+				if (data.BatteryData.InitialSoC < data.BatteryData.MinSOC) {
+					throw new VectoException("Battery: Initial SoC has to be higher than min SoC");
+				}
 				var battery = new Battery(container, data.BatteryData);
 				battery.Initialize(data.BatteryData.InitialSoC);
 				es.Connect(battery);
 			}
 
 			if (data.SuperCapData != null) {
+				if (data.SuperCapData.InitialSoC < data.SuperCapData.MinVoltage / data.SuperCapData.MaxVoltage) {
+					throw new VectoException("SuperCap: Initial SoC has to be higher than min SoC");
+				}
 				var superCap = new SuperCap(container, data.SuperCapData);
 				superCap.Initialize(data.SuperCapData.InitialSoC);
 				es.Connect(superCap);
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/SuperCap.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/SuperCap.cs
index 621be6e2a44d38fe28677393286b092a6f5f1f6f..e839aec156019109d5e5cf0ee43e9d0e7e90b9b7 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/SuperCap.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/SuperCap.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Linq;
+using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
@@ -57,7 +58,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			var maxDischargePower = InternalVoltage * maxDischargeCurrent +
 									maxDischargeCurrent * ModelData.InternalResistance * maxDischargeCurrent;
 			var maxPower = -InternalVoltage / (4 * ModelData.InternalResistance) * InternalVoltage;
-			return VectoMath.Max(maxDischargePower > 0 ? -double.MaxValue.SI<Watt>():maxDischargePower, maxPower);
+			return VectoMath.Max(maxDischargePower, maxPower);
 		}
 
 		public double MinSoC
@@ -71,8 +72,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		public void Initialize(double initialSoC)
 		{
-			PreviousState.Charge = ModelData.Capacity * ((ModelData.MaxVoltage - ModelData.MinVoltage) *  initialSoC +
-						ModelData.MinVoltage);
+			PreviousState.Charge = ModelData.Capacity * (ModelData.MaxVoltage *  initialSoC );
 
 		}
 
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
index f4a0c0efa60474cf27096b9b84d0d01f0f0f28e9..e790d82f2dcb794b7e795e882b5af4cf0e49e0a8 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
@@ -360,7 +360,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			var auxEnergyReserve = ModelData.ElectricAuxDemand * StrategyParameters.AuxReserveTime;
 			BatteryDischargeEnergyThreshold = 0.SI<WattSecond>();
 			if (auxEnergyReserve > 0) {
-				var minSoc = Math.Max(ModelData.BatteryData?.MinSOC ?? ModelData.SuperCapData.InitialSoC,
+				var minSoc = Math.Max(ModelData.BatteryData?.MinSOC ?? ModelData.SuperCapData.MinVoltage / ModelData.SuperCapData.MaxVoltage,
 					StrategyParameters.MinSoC);
 				BatteryDischargeEnergyThreshold =
 					ModelData.BatteryData.Capacity * minSoc * ModelData.BatteryData.SOCMap.Lookup(minSoc) +
@@ -985,8 +985,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 				ShiftRequired = best.Gear.Engaged && !best.Gear.Equals(currentGear), //  gs?.Item1 ?? false,
 				NextGear = best.Gear, // gs?.Item2 ?? 0,
 				EvaluatedSolution = best,
-                SimulationInterval = best.SimulationInterval
-            };
+				SimulationInterval = best.SimulationInterval
+			};
 			//var pos = retVal.MechanicalAssistPower.Keys.First();
 			//if (retVal.MechanicalAssistPower[pos].Item1 == null) {
 			//	retVal.MechanicalAssistPower[pos] = Tuple.Create(best.Response.ElectricMotor.AngularVelocity, retVal.MechanicalAssistPower[pos].Item2);
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/SuperCapTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/SuperCapTest.cs
index a8d02f0bb6379cb13662356af37e47c01fd39afc..56c45acca7b0794f3a8fb84bf7e4899fa85496f6 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponent/SuperCapTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/SuperCapTest.cs
@@ -36,6 +36,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 				InternalResistance = 0.02.SI<Ohm>(),
 				MinVoltage = 0.SI<Volt>(),
 				MaxVoltage = 330.SI<Volt>(),
+				MaxCurrentDischarge = -200.SI<Ampere>(),
+				MaxCurrentCharge = 200.SI<Ampere>()
 			};
 
 			var container = new MockVehicleContainer();