diff --git a/VECTO/GUI/F_ENG.vb b/VECTO/GUI/F_ENG.vb
index f35f921cd7b96138180ee38231fb95b0a79238bb..1a0d85e8c4da047be54710e04d9b0e5253b39e42 100644
--- a/VECTO/GUI/F_ENG.vb
+++ b/VECTO/GUI/F_ENG.vb
@@ -555,26 +555,27 @@ Public Class F_ENG
 
             If IsNumeric(Me.TbNleerl.Text) AndAlso Me.TbNleerl.Text > 0 Then
 
-                FLD0.Init(CSng(Me.TbNleerl.Text))
-
-                Shiftpoly = New cGBX.cShiftPolygon("", 0)
-                Shiftpoly.SetGenericShiftPoly(FLD0, Me.TbNleerl.Text)
-
-                s = New System.Windows.Forms.DataVisualization.Charting.Series
-                s.Points.DataBindXY(Shiftpoly.gs_nUup, Shiftpoly.gs_TqUp)
-                s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine
-                s.BorderWidth = 2
-                s.Color = Color.DarkRed
-                s.Name = "Upshift curve"
-                MyChart.Series.Add(s)
-
-                s = New System.Windows.Forms.DataVisualization.Charting.Series
-                s.Points.DataBindXY(Shiftpoly.gs_nUdown, Shiftpoly.gs_TqDown)
-                s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine
-                s.BorderWidth = 2
-                s.Color = Color.DarkRed
-                s.Name = "Downshift curve"
-                MyChart.Series.Add(s)
+                If FLD0.Init(CSng(Me.TbNleerl.Text)) Then
+
+                    Shiftpoly = New cGBX.cShiftPolygon("", 0)
+                    Shiftpoly.SetGenericShiftPoly(FLD0, Me.TbNleerl.Text)
+
+                    s = New System.Windows.Forms.DataVisualization.Charting.Series
+                    s.Points.DataBindXY(Shiftpoly.gs_nUup, Shiftpoly.gs_TqUp)
+                    s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine
+                    s.BorderWidth = 2
+                    s.Color = Color.DarkRed
+                    s.Name = "Upshift curve"
+                    MyChart.Series.Add(s)
+
+                    s = New System.Windows.Forms.DataVisualization.Charting.Series
+                    s.Points.DataBindXY(Shiftpoly.gs_nUdown, Shiftpoly.gs_TqDown)
+                    s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine
+                    s.BorderWidth = 2
+                    s.Color = Color.DarkRed
+                    s.Name = "Downshift curve"
+                    MyChart.Series.Add(s)
+                End If
 
             End If
 
diff --git a/VECTO/GUI/F_VECTO.vb b/VECTO/GUI/F_VECTO.vb
index e916ef0687cb145b0093837a456645d1f8b19f8b..d7366c0dde6b48fcd9b5e2848525b57fe53f326d 100644
--- a/VECTO/GUI/F_VECTO.vb
+++ b/VECTO/GUI/F_VECTO.vb
@@ -1055,26 +1055,27 @@ lbDlog:
                     MyChart.Series.Add(s)
 
                     If Cfg.DeclMode Then
-                        FLD0.Init(ENG0.Nidle)
-
-                        Shiftpoly = New cGBX.cShiftPolygon("", 0)
-                        Shiftpoly.SetGenericShiftPoly(FLD0, ENG0.Nidle)
-
-                        s = New System.Windows.Forms.DataVisualization.Charting.Series
-                        s.Points.DataBindXY(Shiftpoly.gs_nUup, Shiftpoly.gs_TqUp)
-                        s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine
-                        s.BorderWidth = 2
-                        s.Color = Color.DarkRed
-                        s.Name = "Upshift curve"
-                        MyChart.Series.Add(s)
-
-                        s = New System.Windows.Forms.DataVisualization.Charting.Series
-                        s.Points.DataBindXY(Shiftpoly.gs_nUdown, Shiftpoly.gs_TqDown)
-                        s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine
-                        s.BorderWidth = 2
-                        s.Color = Color.DarkRed
-                        s.Name = "Downshift curve"
-                        MyChart.Series.Add(s)
+
+                        If FLD0.Init(ENG0.Nidle) Then
+                            Shiftpoly = New cGBX.cShiftPolygon("", 0)
+                            Shiftpoly.SetGenericShiftPoly(FLD0, ENG0.Nidle)
+
+                            s = New System.Windows.Forms.DataVisualization.Charting.Series
+                            s.Points.DataBindXY(Shiftpoly.gs_nUup, Shiftpoly.gs_TqUp)
+                            s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine
+                            s.BorderWidth = 2
+                            s.Color = Color.DarkRed
+                            s.Name = "Upshift curve"
+                            MyChart.Series.Add(s)
+
+                            s = New System.Windows.Forms.DataVisualization.Charting.Series
+                            s.Points.DataBindXY(Shiftpoly.gs_nUdown, Shiftpoly.gs_TqDown)
+                            s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine
+                            s.BorderWidth = 2
+                            s.Color = Color.DarkRed
+                            s.Name = "Downshift curve"
+                            MyChart.Series.Add(s)
+                        End If
 
                     End If
 
diff --git a/VECTO/Input Files/cENG.vb b/VECTO/Input Files/cENG.vb
index c7875237d27b25d4445b65fbe6611a933ce6c2ec..20c460514bf33fd7276ca889b9a1cb94c3379313 100644
--- a/VECTO/Input Files/cENG.vb	
+++ b/VECTO/Input Files/cENG.vb	
@@ -376,7 +376,7 @@ Public Class cENG
                 Return False
             End Try
 
-            FLD(i).Init(Nidle)
+            If Not FLD(i).Init(Nidle) Then Return False
 
         Next
 
diff --git a/VECTO/Input Files/cFLD.vb b/VECTO/Input Files/cFLD.vb
index 8f961e3c64cf5c44a7ef37a2ddacb43e8ca48bef..7f125edc3c747a9da92c1ca53ecdd29b8421373b 100644
--- a/VECTO/Input Files/cFLD.vb	
+++ b/VECTO/Input Files/cFLD.vb	
@@ -330,6 +330,8 @@ lbInt:
 
         N95h = fnUofPfull(0.95 * Pfull(fnUrated), False)
 
+        If N95h < 0 Then Return -1
+
         Amax = Area(Nidle, N95h)
 
         For i = 0 To iDim - 1
@@ -465,6 +467,8 @@ lbInt:
             LastPe = nMtoPe(nU, Tq(nU))
             nUtarget = nU
 
+            If LastPe > PeTarget Then Return -1
+
             Do
                 Pe = nMtoPe(nU, Tq(nU))
 
@@ -486,6 +490,8 @@ lbInt:
             LastPe = nMtoPe(nU, Tq(nU))
             nUtarget = nU
 
+            If LastPe > PeTarget Then Return -1
+
             Do
                 Pe = nMtoPe(nU, Tq(nU))
 
@@ -525,20 +531,45 @@ lbInt:
 
     End Function
 
-    Public Sub Init(ByVal Nidle As Single)
+    Public Function Init(ByVal Nidle As Single) As Boolean
         Dim Pmax As Single
+        Dim MsgSrc As String
+
+        MsgSrc = "Main/ReadInp/Eng.Init"
 
         Pmax = Pfull(fnUrated)
 
         Nlo = fnUofPfull(0.55 * Pmax, True)
 
+        If Nlo < 0 Then
+            WorkerMsg(tMsgID.Err, "Failed to calculate Nlo! Check full load curve!", MsgSrc)
+            Return False
+        End If
+
         N95h = fnUofPfull(0.95 * Pmax, False)
 
+        If N95h < 0 Then
+            WorkerMsg(tMsgID.Err, "Failed to calculate N95h! Check full load curve!", MsgSrc)
+            Return False
+        End If
+
         Npref = fNpref(Nidle)
 
+        If Npref < 0 Then
+            WorkerMsg(tMsgID.Err, "Failed to calculate Npref! Check full load curve!", MsgSrc)
+            Return False
+        End If
+
         Nhi = fnUofPfull(0.7 * Pmax, False)
 
-    End Sub
+        If Nhi < 0 Then
+            WorkerMsg(tMsgID.Err, "Failed to calculate Nhi! Check full load curve!", MsgSrc)
+            Return False
+        End If
+
+        Return True
+
+    End Function
 
     Public Sub DeclInit()
         Dim i As Integer
diff --git a/VECTO/Input Files/cGBX.vb b/VECTO/Input Files/cGBX.vb
index ae1e3bb1960900123486c7abeac6cf5f2450334e..b7c19677ed81801fff4752acb6d3712f924a1d3b 100644
--- a/VECTO/Input Files/cGBX.vb	
+++ b/VECTO/Input Files/cGBX.vb	
@@ -467,7 +467,7 @@ Public Class cGBX
             nuMax = Math.Min(TCnu(TCdim), nUout / ENG.Nidle)
 
         Else
-            nuMin = Math.Max(nUout / ENG.Nrated, TCnu(0))
+            nuMin = Math.Max(nUout / FLD(Gear).N95h, TCnu(0))
             nuMax = Math.Min(TCnuMax, nUout / ENG.Nidle)
         End If
 
diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb
index 4b8497036eef115d877dca6b077f5046edbd4712..76a5cb3d32b71f1be88337a8ed5cf5a69515bcce 100644
--- a/VECTO/MODcalc/cPower.vb
+++ b/VECTO/MODcalc/cPower.vb
@@ -219,27 +219,27 @@ Public Class cPower
                 PaMot = fPaMot(nU, LastnU)
             End If
 
-            'Aux Demand
-            Paux = fPaux(i, nU)
 
-            'Engine Power (at Clutch)
-            If Pplus Or Pminus Then
 
+            'Calculate powertrain losses => power at clutch
+            If Pplus Or Pminus Then
                 PlossGB = fPlossGB(Pwheel, Vact, Gear, True)
                 PlossDiff = fPlossDiff(Pwheel, Vact, True)
                 PlossRt = fPlossRt(Vact, Gear)
                 PaGetr = fPaG(Vact, aact)
-
                 Pkup = Pwheel + PlossGB + PlossDiff + PaGetr + PlossRt
-                P = Pkup + Paux + PaMot
-
             Else
-
                 Pkup = 0
-                P = Paux + PaMot
-
             End If
 
+            'Total aux power
+            '[kW]
+            Paux = fPaux(i, nU)
+
+            'Internal Engine Power (Pclutch plus Aux plus Inertia)
+            P = Pkup + Paux + PaMot
+
+
             'Full load / motoring
             Pmin = FLD(Gear).Pdrag(nU)
 
@@ -933,26 +933,9 @@ lb_nOK:
             '************************************ Determine Engine-state ************************************
             ' nU is final here!
 
-            'Determine Aux power demand (from VEH and DRI)
-            Paux = fPaux(jz, Math.Max(nU, ENG.Nidle))
-
-            'ICE-inertia
-            If jz = 0 Then
-                PaMot = 0
-            Else
-                'Not optimal since jz-1 to jz not the right interval
-                PaMot = fPaMot(nU, MODdata.nU(jz - 1))
-            End If
-
-
-
-            'Total Engine-power
-            '   => Pantr
-            '   => P
-            '   => Pkup
+            'Power at clutch
             Select Case Clutch
                 Case tEngClutch.Opened
-                    P = Paux + PaMot
                     Pclutch = 0
                     PlossGB = 0
                     PlossDiff = 0
@@ -963,7 +946,7 @@ lb_nOK:
 
                     If GBX.TCon And GBX.IsTCgear(Gear) Then
 
-                        P = nMtoPe(nU, GBX.TCMin) + Paux + PaMot
+                        Pclutch = nMtoPe(nU, GBX.TCMin)
 
                         If P >= 0 Then
                             PlossTC = Math.Abs(nMtoPe(GBX.TCnUin, GBX.TCMin) * (1 - GBX.TC_mu * GBX.TC_nu))
@@ -971,7 +954,6 @@ lb_nOK:
                             PlossTC = Math.Abs(nMtoPe(GBX.TCnUout, GBX.TCMout) * (1 - GBX.TC_mu * GBX.TC_nu))
                         End If
 
-
                     Else
 
                         PlossGB = fPlossGB(Pwheel, Vact, Gear, False)
@@ -980,7 +962,6 @@ lb_nOK:
                         PlossTC = 0
                         PaGbx = fPaG(Vact, aact)
                         Pclutch = Pwheel + PlossGB + PlossDiff + PaGbx + PlossRt
-                        P = Pclutch + Paux + PaMot
 
                     End If
                 Case Else 'tEngClutch.Slipping: never in AT mode!
@@ -990,9 +971,26 @@ lb_nOK:
                     PlossTC = 0
                     PaGbx = fPaG(Vact, aact)
                     Pclutch = (Pwheel + PlossGB + PlossDiff + PaGbx + PlossRt) / ClutchEta
-                    P = Pclutch + Paux + PaMot
             End Select
 
+
+            'Total aux power
+            '[kW]
+            Paux = fPaux(jz, Math.Max(nU, ENG.Nidle))
+
+
+            'ICE-inertia
+            If jz = 0 Then
+                PaMot = 0
+            Else
+                'Not optimal since jz-1 to jz not the right interval
+                PaMot = fPaMot(nU, MODdata.nU(jz - 1))
+            End If
+
+            'Internal Engine Power (Pclutch plus Aux plus Inertia)
+            P = Pclutch + Paux + PaMot
+
+
             'EngState
             If Clutch = tEngClutch.Opened Then
 
@@ -2295,7 +2293,7 @@ lb10:
         Return CSng(((VEH.Loading + VEH.Mass + VEH.MassExtra) * 9.81 * Math.Sin(Math.Atan(Grad * 0.01)) * v) * 0.001)
     End Function
 
-    '----------------Ancillaries(Nebenaggregate) ----------------
+    '----------------Auxillaries(Nebenaggregate) ----------------
     Public Function fPaux(ByVal t As Integer, ByVal nU As Single) As Single
         Return CSng(MODdata.Vh.Padd(t) + VEC.PauxSum(t, nU))
     End Function
diff --git a/VECTO/M_MAIN.vb b/VECTO/M_MAIN.vb
index 33953d1eadd93ac14ea8546343aeaa1f270e3123..026c9ab013fc4808284d45f280c4a1fab025fe94 100644
--- a/VECTO/M_MAIN.vb
+++ b/VECTO/M_MAIN.vb
@@ -787,7 +787,7 @@ lbExit:
         End If
 
         'Must be called after cGBX.ReadFile because cGBX.GearCount is needed
-        ENG.Init()
+        If Not ENG.Init() Then Return False
 
         'Must be called after cENG.Init because FLD must be loaded
         If Cfg.DeclMode Then