diff --git a/VECTO Changelog.txt b/VECTO Changelog.txt
index 71e6deec25133eb1d6d013cbb1a3ddc5462ff068..48918955dc40f1c268e801b64981c4295c9c572d 100644
--- a/VECTO Changelog.txt	
+++ b/VECTO Changelog.txt	
@@ -2,8 +2,12 @@ VECTO 1.1 (current source)
 - New independent licensing dll replaces TUG's version
 - Speed values below 0.09km/h are set to 0km/h
 - Gear shift polygon model
-- Bugfix: command line argument "/run" was not processed
-- Changed command line args prefix form "/" to "-"
+- Command Line Arguments processing:
+	o Changed prefix form "/" to "-"
+	o Bugfix: Argument "-run" was not processed
+	o Job files and driving cycles can be added via command line
+- Cleared out some "PHEM" remains in log and message output
+
 
 VECTO 1.0 - 09.11.2012
 - Bugfix: Error in Distance Correction
diff --git a/VECTO/ApplicationEvents.vb b/VECTO/ApplicationEvents.vb
index f217b51efb7381c24f2ce773ea63b6a4c4ec35a3..1f299c422529a7c621351b4150ac2a2b7e4ec8c1 100644
--- a/VECTO/ApplicationEvents.vb
+++ b/VECTO/ApplicationEvents.vb
@@ -146,6 +146,7 @@ Namespace My
         Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
             e.ExitApplication = True
             MsgBox("ERROR!" & ChrW(10) & ChrW(10) & e.Exception.Message.ToString, MsgBoxStyle.Critical, "Unexpected Error")
+            LOGfile.WriteLine(">>>Unexpected Error:" & e.Exception.ToString())
         End Sub
 
     End Class
diff --git a/VECTO/GUI/F_AboutBox.Designer.vb b/VECTO/GUI/F_AboutBox.Designer.vb
index 99af7654d532fbee8d3e9fda9dcaa4a010cb99ab..02b130fdf8e517f49bb01c0bae44c33ea68cda21 100644
--- a/VECTO/GUI/F_AboutBox.Designer.vb
+++ b/VECTO/GUI/F_AboutBox.Designer.vb
@@ -377,7 +377,7 @@ Partial Class F_AboutBox
         Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow
         Me.Name = "F_AboutBox"
         Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
-        Me.Text = "About PHEM"
+        Me.Text = "About VECTO"
         Me.Panel1.ResumeLayout(False)
         Me.Panel1.PerformLayout()
         CType(Me.PictureBoxJRC, System.ComponentModel.ISupportInitialize).EndInit()
diff --git a/VECTO/GUI/F_AboutBox.resx b/VECTO/GUI/F_AboutBox.resx
index ff31a6db56e23b5a334f34387830ba5b4bd33eb8..c7e0d4bdf13aadeae1f2c8b103a0232dd12e22d8 100644
--- a/VECTO/GUI/F_AboutBox.resx
+++ b/VECTO/GUI/F_AboutBox.resx
@@ -112,9 +112,9 @@
     <value>2.0</value>
   </resheader>
   <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
 </root>
\ No newline at end of file
diff --git a/VECTO/GUI/F_GBX.Designer.vb b/VECTO/GUI/F_GBX.Designer.vb
index 3de93bb8ed49107ff49e2115b9c817209d3574a5..4cd31449f26a87386fbc0e4d5bcdd0184b1482c3 100644
--- a/VECTO/GUI/F_GBX.Designer.vb
+++ b/VECTO/GUI/F_GBX.Designer.vb
@@ -30,6 +30,8 @@ Partial Class F_GBX
         Me.ToolStripBtSaveAs = New System.Windows.Forms.ToolStripButton()
         Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator()
         Me.ToolStripBtSendTo = New System.Windows.Forms.ToolStripButton()
+        Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator()
+        Me.ToolStripButton1 = New System.Windows.Forms.ToolStripButton()
         Me.StatusStrip1 = New System.Windows.Forms.StatusStrip()
         Me.LbStatus = New System.Windows.Forms.ToolStripStatusLabel()
         Me.ButCancel = New System.Windows.Forms.Button()
@@ -48,11 +50,32 @@ Partial Class F_GBX
         Me.TbName = New System.Windows.Forms.TextBox()
         Me.PictureBox1 = New System.Windows.Forms.PictureBox()
         Me.BtClearGear = New System.Windows.Forms.Button()
-        Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator()
-        Me.ToolStripButton1 = New System.Windows.Forms.ToolStripButton()
+        Me.GroupBox1 = New System.Windows.Forms.GroupBox()
+        Me.TbShiftTime = New System.Windows.Forms.TextBox()
+        Me.Label12 = New System.Windows.Forms.Label()
+        Me.Label13 = New System.Windows.Forms.Label()
+        Me.ChSkipGears = New System.Windows.Forms.CheckBox()
+        Me.GroupBox2 = New System.Windows.Forms.GroupBox()
+        Me.TbStartAcc = New System.Windows.Forms.TextBox()
+        Me.Label11 = New System.Windows.Forms.Label()
+        Me.TbStartSpeed = New System.Windows.Forms.TextBox()
+        Me.Label9 = New System.Windows.Forms.Label()
+        Me.Label10 = New System.Windows.Forms.Label()
+        Me.TbTqResvStart = New System.Windows.Forms.TextBox()
+        Me.Label8 = New System.Windows.Forms.Label()
+        Me.Label5 = New System.Windows.Forms.Label()
+        Me.Label7 = New System.Windows.Forms.Label()
+        Me.TbTqResv = New System.Windows.Forms.TextBox()
+        Me.TbShiftPolyFile = New System.Windows.Forms.TextBox()
+        Me.BtShiftPolyBrowse = New System.Windows.Forms.Button()
+        Me.Label4 = New System.Windows.Forms.Label()
+        Me.Label2 = New System.Windows.Forms.Label()
+        Me.Label1 = New System.Windows.Forms.Label()
         Me.ToolStrip1.SuspendLayout()
         Me.StatusStrip1.SuspendLayout()
         CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
+        Me.GroupBox1.SuspendLayout()
+        Me.GroupBox2.SuspendLayout()
         Me.SuspendLayout()
         '
         'ToolStrip1
@@ -61,7 +84,7 @@ Partial Class F_GBX
         Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripBtNew, Me.ToolStripBtOpen, Me.ToolStripBtSave, Me.ToolStripBtSaveAs, Me.ToolStripSeparator3, Me.ToolStripBtSendTo, Me.ToolStripSeparator1, Me.ToolStripButton1})
         Me.ToolStrip1.Location = New System.Drawing.Point(0, 0)
         Me.ToolStrip1.Name = "ToolStrip1"
-        Me.ToolStrip1.Size = New System.Drawing.Size(392, 25)
+        Me.ToolStrip1.Size = New System.Drawing.Size(465, 25)
         Me.ToolStrip1.TabIndex = 30
         Me.ToolStrip1.Text = "ToolStrip1"
         '
@@ -120,12 +143,26 @@ Partial Class F_GBX
         Me.ToolStripBtSendTo.Text = "Send to GEN Editor"
         Me.ToolStripBtSendTo.ToolTipText = "Send to GEN Editor"
         '
+        'ToolStripSeparator1
+        '
+        Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
+        Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25)
+        '
+        'ToolStripButton1
+        '
+        Me.ToolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
+        Me.ToolStripButton1.Image = Global.VECTO.My.Resources.Resources.Help_icon
+        Me.ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta
+        Me.ToolStripButton1.Name = "ToolStripButton1"
+        Me.ToolStripButton1.Size = New System.Drawing.Size(23, 22)
+        Me.ToolStripButton1.Text = "Help"
+        '
         'StatusStrip1
         '
         Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.LbStatus})
-        Me.StatusStrip1.Location = New System.Drawing.Point(0, 386)
+        Me.StatusStrip1.Location = New System.Drawing.Point(0, 629)
         Me.StatusStrip1.Name = "StatusStrip1"
-        Me.StatusStrip1.Size = New System.Drawing.Size(392, 22)
+        Me.StatusStrip1.Size = New System.Drawing.Size(465, 22)
         Me.StatusStrip1.SizingGrip = False
         Me.StatusStrip1.TabIndex = 37
         Me.StatusStrip1.Text = "StatusStrip1"
@@ -140,7 +177,7 @@ Partial Class F_GBX
         '
         Me.ButCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
         Me.ButCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
-        Me.ButCancel.Location = New System.Drawing.Point(305, 360)
+        Me.ButCancel.Location = New System.Drawing.Point(378, 603)
         Me.ButCancel.Name = "ButCancel"
         Me.ButCancel.Size = New System.Drawing.Size(75, 23)
         Me.ButCancel.TabIndex = 39
@@ -150,7 +187,7 @@ Partial Class F_GBX
         'ButOK
         '
         Me.ButOK.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
-        Me.ButOK.Location = New System.Drawing.Point(224, 360)
+        Me.ButOK.Location = New System.Drawing.Point(297, 603)
         Me.ButOK.Name = "ButOK"
         Me.ButOK.Size = New System.Drawing.Size(75, 23)
         Me.ButOK.TabIndex = 38
@@ -159,7 +196,7 @@ Partial Class F_GBX
         '
         'TbTracInt
         '
-        Me.TbTracInt.Location = New System.Drawing.Point(314, 115)
+        Me.TbTracInt.Location = New System.Drawing.Point(389, 115)
         Me.TbTracInt.Name = "TbTracInt"
         Me.TbTracInt.Size = New System.Drawing.Size(40, 20)
         Me.TbTracInt.TabIndex = 1
@@ -173,7 +210,7 @@ Partial Class F_GBX
         Me.LvGears.Location = New System.Drawing.Point(12, 141)
         Me.LvGears.MultiSelect = False
         Me.LvGears.Name = "LvGears"
-        Me.LvGears.Size = New System.Drawing.Size(368, 195)
+        Me.LvGears.Size = New System.Drawing.Size(441, 170)
         Me.LvGears.TabIndex = 2
         Me.LvGears.TabStop = False
         Me.LvGears.UseCompatibleStateImageBehavior = False
@@ -187,11 +224,12 @@ Partial Class F_GBX
         'ColumnHeader2
         '
         Me.ColumnHeader2.Text = "Ratio"
+        Me.ColumnHeader2.Width = 70
         '
         'ColumnHeader3
         '
         Me.ColumnHeader3.Text = "Loss Map or Efficiency [-]"
-        Me.ColumnHeader3.Width = 260
+        Me.ColumnHeader3.Width = 304
         '
         'TBI_getr
         '
@@ -203,7 +241,7 @@ Partial Class F_GBX
         'Label49
         '
         Me.Label49.AutoSize = True
-        Me.Label49.Location = New System.Drawing.Point(360, 118)
+        Me.Label49.Location = New System.Drawing.Point(435, 118)
         Me.Label49.Name = "Label49"
         Me.Label49.Size = New System.Drawing.Size(18, 13)
         Me.Label49.TabIndex = 2
@@ -221,7 +259,7 @@ Partial Class F_GBX
         'Label48
         '
         Me.Label48.AutoSize = True
-        Me.Label48.Location = New System.Drawing.Point(206, 118)
+        Me.Label48.Location = New System.Drawing.Point(281, 118)
         Me.Label48.Name = "Label48"
         Me.Label48.Size = New System.Drawing.Size(102, 13)
         Me.Label48.TabIndex = 2
@@ -249,7 +287,7 @@ Partial Class F_GBX
         '
         Me.TbName.Location = New System.Drawing.Point(119, 82)
         Me.TbName.Name = "TbName"
-        Me.TbName.Size = New System.Drawing.Size(261, 20)
+        Me.TbName.Size = New System.Drawing.Size(334, 20)
         Me.TbName.TabIndex = 41
         '
         'PictureBox1
@@ -258,32 +296,216 @@ Partial Class F_GBX
         Me.PictureBox1.Image = Global.VECTO.My.Resources.Resources.VECTO_GBX
         Me.PictureBox1.Location = New System.Drawing.Point(12, 28)
         Me.PictureBox1.Name = "PictureBox1"
-        Me.PictureBox1.Size = New System.Drawing.Size(368, 40)
+        Me.PictureBox1.Size = New System.Drawing.Size(441, 40)
         Me.PictureBox1.TabIndex = 43
         Me.PictureBox1.TabStop = False
         '
         'BtClearGear
         '
         Me.BtClearGear.Image = Global.VECTO.My.Resources.Resources.minus_circle_icon
-        Me.BtClearGear.Location = New System.Drawing.Point(12, 342)
+        Me.BtClearGear.Location = New System.Drawing.Point(12, 317)
         Me.BtClearGear.Name = "BtClearGear"
         Me.BtClearGear.Size = New System.Drawing.Size(29, 23)
         Me.BtClearGear.TabIndex = 3
         Me.BtClearGear.UseVisualStyleBackColor = True
         '
-        'ToolStripSeparator1
+        'GroupBox1
+        '
+        Me.GroupBox1.Controls.Add(Me.TbShiftTime)
+        Me.GroupBox1.Controls.Add(Me.Label12)
+        Me.GroupBox1.Controls.Add(Me.Label13)
+        Me.GroupBox1.Controls.Add(Me.ChSkipGears)
+        Me.GroupBox1.Controls.Add(Me.GroupBox2)
+        Me.GroupBox1.Controls.Add(Me.TbTqResv)
+        Me.GroupBox1.Controls.Add(Me.TbShiftPolyFile)
+        Me.GroupBox1.Controls.Add(Me.BtShiftPolyBrowse)
+        Me.GroupBox1.Controls.Add(Me.Label4)
+        Me.GroupBox1.Controls.Add(Me.Label2)
+        Me.GroupBox1.Controls.Add(Me.Label1)
+        Me.GroupBox1.Location = New System.Drawing.Point(12, 346)
+        Me.GroupBox1.Name = "GroupBox1"
+        Me.GroupBox1.Size = New System.Drawing.Size(441, 251)
+        Me.GroupBox1.TabIndex = 44
+        Me.GroupBox1.TabStop = False
+        Me.GroupBox1.Text = "Gear shift parameters"
+        '
+        'TbShiftTime
+        '
+        Me.TbShiftTime.Location = New System.Drawing.Point(215, 98)
+        Me.TbShiftTime.Name = "TbShiftTime"
+        Me.TbShiftTime.Size = New System.Drawing.Size(57, 20)
+        Me.TbShiftTime.TabIndex = 10
+        '
+        'Label12
+        '
+        Me.Label12.AutoSize = True
+        Me.Label12.Location = New System.Drawing.Point(278, 101)
+        Me.Label12.Name = "Label12"
+        Me.Label12.Size = New System.Drawing.Size(18, 13)
+        Me.Label12.TabIndex = 9
+        Me.Label12.Text = "[s]"
+        '
+        'Label13
+        '
+        Me.Label13.AutoSize = True
+        Me.Label13.Location = New System.Drawing.Point(24, 101)
+        Me.Label13.Name = "Label13"
+        Me.Label13.Size = New System.Drawing.Size(185, 13)
+        Me.Label13.TabIndex = 8
+        Me.Label13.Text = "Minimum time between two gear shifts"
+        '
+        'ChSkipGears
+        '
+        Me.ChSkipGears.AutoSize = True
+        Me.ChSkipGears.Location = New System.Drawing.Point(17, 74)
+        Me.ChSkipGears.Name = "ChSkipGears"
+        Me.ChSkipGears.Size = New System.Drawing.Size(78, 17)
+        Me.ChSkipGears.TabIndex = 7
+        Me.ChSkipGears.Text = "Skip Gears"
+        Me.ChSkipGears.UseVisualStyleBackColor = True
+        '
+        'GroupBox2
+        '
+        Me.GroupBox2.Controls.Add(Me.TbStartAcc)
+        Me.GroupBox2.Controls.Add(Me.Label11)
+        Me.GroupBox2.Controls.Add(Me.TbStartSpeed)
+        Me.GroupBox2.Controls.Add(Me.Label9)
+        Me.GroupBox2.Controls.Add(Me.Label10)
+        Me.GroupBox2.Controls.Add(Me.TbTqResvStart)
+        Me.GroupBox2.Controls.Add(Me.Label8)
+        Me.GroupBox2.Controls.Add(Me.Label5)
+        Me.GroupBox2.Controls.Add(Me.Label7)
+        Me.GroupBox2.Location = New System.Drawing.Point(6, 135)
+        Me.GroupBox2.Name = "GroupBox2"
+        Me.GroupBox2.Size = New System.Drawing.Size(429, 110)
+        Me.GroupBox2.TabIndex = 6
+        Me.GroupBox2.TabStop = False
+        Me.GroupBox2.Text = "Start Gear"
+        '
+        'TbStartAcc
+        '
+        Me.TbStartAcc.Location = New System.Drawing.Point(209, 71)
+        Me.TbStartAcc.Name = "TbStartAcc"
+        Me.TbStartAcc.Size = New System.Drawing.Size(57, 20)
+        Me.TbStartAcc.TabIndex = 5
+        '
+        'Label11
+        '
+        Me.Label11.AutoSize = True
+        Me.Label11.Location = New System.Drawing.Point(20, 74)
+        Me.Label11.Name = "Label11"
+        Me.Label11.Size = New System.Drawing.Size(121, 13)
+        Me.Label11.TabIndex = 0
+        Me.Label11.Text = "Acceleration during start"
+        '
+        'TbStartSpeed
+        '
+        Me.TbStartSpeed.Location = New System.Drawing.Point(209, 45)
+        Me.TbStartSpeed.Name = "TbStartSpeed"
+        Me.TbStartSpeed.Size = New System.Drawing.Size(57, 20)
+        Me.TbStartSpeed.TabIndex = 5
+        '
+        'Label9
+        '
+        Me.Label9.AutoSize = True
+        Me.Label9.Location = New System.Drawing.Point(20, 48)
+        Me.Label9.Name = "Label9"
+        Me.Label9.Size = New System.Drawing.Size(183, 13)
+        Me.Label9.TabIndex = 0
+        Me.Label9.Text = "Vehicle speed with clutch fully closed"
+        '
+        'Label10
+        '
+        Me.Label10.AutoSize = True
+        Me.Label10.Location = New System.Drawing.Point(272, 74)
+        Me.Label10.Name = "Label10"
+        Me.Label10.Size = New System.Drawing.Size(37, 13)
+        Me.Label10.TabIndex = 0
+        Me.Label10.Text = "[m/s2]"
+        '
+        'TbTqResvStart
+        '
+        Me.TbTqResvStart.Location = New System.Drawing.Point(209, 19)
+        Me.TbTqResvStart.Name = "TbTqResvStart"
+        Me.TbTqResvStart.Size = New System.Drawing.Size(57, 20)
+        Me.TbTqResvStart.TabIndex = 5
+        '
+        'Label8
+        '
+        Me.Label8.AutoSize = True
+        Me.Label8.Location = New System.Drawing.Point(272, 48)
+        Me.Label8.Name = "Label8"
+        Me.Label8.Size = New System.Drawing.Size(31, 13)
+        Me.Label8.TabIndex = 0
+        Me.Label8.Text = "[m/s]"
+        '
+        'Label5
+        '
+        Me.Label5.AutoSize = True
+        Me.Label5.Location = New System.Drawing.Point(20, 22)
+        Me.Label5.Name = "Label5"
+        Me.Label5.Size = New System.Drawing.Size(79, 13)
+        Me.Label5.TabIndex = 0
+        Me.Label5.Text = "Torque reserve"
+        '
+        'Label7
+        '
+        Me.Label7.AutoSize = True
+        Me.Label7.Location = New System.Drawing.Point(272, 22)
+        Me.Label7.Name = "Label7"
+        Me.Label7.Size = New System.Drawing.Size(21, 13)
+        Me.Label7.TabIndex = 0
+        Me.Label7.Text = "[%]"
+        '
+        'TbTqResv
+        '
+        Me.TbTqResv.Location = New System.Drawing.Point(215, 72)
+        Me.TbTqResv.Name = "TbTqResv"
+        Me.TbTqResv.Size = New System.Drawing.Size(57, 20)
+        Me.TbTqResv.TabIndex = 5
+        '
+        'TbShiftPolyFile
+        '
+        Me.TbShiftPolyFile.Location = New System.Drawing.Point(6, 42)
+        Me.TbShiftPolyFile.Name = "TbShiftPolyFile"
+        Me.TbShiftPolyFile.Size = New System.Drawing.Size(391, 20)
+        Me.TbShiftPolyFile.TabIndex = 4
+        '
+        'BtShiftPolyBrowse
+        '
+        Me.BtShiftPolyBrowse.Location = New System.Drawing.Point(403, 40)
+        Me.BtShiftPolyBrowse.Name = "BtShiftPolyBrowse"
+        Me.BtShiftPolyBrowse.Size = New System.Drawing.Size(32, 23)
+        Me.BtShiftPolyBrowse.TabIndex = 3
+        Me.BtShiftPolyBrowse.Text = "..."
+        Me.BtShiftPolyBrowse.UseVisualStyleBackColor = True
+        '
+        'Label4
         '
-        Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
-        Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25)
+        Me.Label4.AutoSize = True
+        Me.Label4.Location = New System.Drawing.Point(278, 75)
+        Me.Label4.Name = "Label4"
+        Me.Label4.Size = New System.Drawing.Size(21, 13)
+        Me.Label4.TabIndex = 0
+        Me.Label4.Text = "[%]"
         '
-        'ToolStripButton1
+        'Label2
+        '
+        Me.Label2.AutoSize = True
+        Me.Label2.Location = New System.Drawing.Point(130, 75)
+        Me.Label2.Name = "Label2"
+        Me.Label2.Size = New System.Drawing.Size(79, 13)
+        Me.Label2.TabIndex = 0
+        Me.Label2.Text = "Torque reserve"
         '
-        Me.ToolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
-        Me.ToolStripButton1.Image = Global.VECTO.My.Resources.Resources.Help_icon
-        Me.ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta
-        Me.ToolStripButton1.Name = "ToolStripButton1"
-        Me.ToolStripButton1.Size = New System.Drawing.Size(23, 22)
-        Me.ToolStripButton1.Text = "Help"
+        'Label1
+        '
+        Me.Label1.AutoSize = True
+        Me.Label1.Location = New System.Drawing.Point(6, 26)
+        Me.Label1.Name = "Label1"
+        Me.Label1.Size = New System.Drawing.Size(89, 13)
+        Me.Label1.TabIndex = 0
+        Me.Label1.Text = "Shift polygons file"
         '
         'F_GBX
         '
@@ -291,7 +513,8 @@ Partial Class F_GBX
         Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
         Me.CancelButton = Me.ButCancel
-        Me.ClientSize = New System.Drawing.Size(392, 408)
+        Me.ClientSize = New System.Drawing.Size(465, 651)
+        Me.Controls.Add(Me.GroupBox1)
         Me.Controls.Add(Me.PictureBox1)
         Me.Controls.Add(Me.Label3)
         Me.Controls.Add(Me.TbName)
@@ -318,6 +541,10 @@ Partial Class F_GBX
         Me.StatusStrip1.ResumeLayout(False)
         Me.StatusStrip1.PerformLayout()
         CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
+        Me.GroupBox1.ResumeLayout(False)
+        Me.GroupBox1.PerformLayout()
+        Me.GroupBox2.ResumeLayout(False)
+        Me.GroupBox2.PerformLayout()
         Me.ResumeLayout(False)
         Me.PerformLayout()
 
@@ -349,4 +576,25 @@ Partial Class F_GBX
     Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
     Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator
     Friend WithEvents ToolStripButton1 As System.Windows.Forms.ToolStripButton
+    Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox
+    Friend WithEvents Label1 As System.Windows.Forms.Label
+    Friend WithEvents BtShiftPolyBrowse As System.Windows.Forms.Button
+    Friend WithEvents TbShiftPolyFile As System.Windows.Forms.TextBox
+    Friend WithEvents Label2 As System.Windows.Forms.Label
+    Friend WithEvents TbTqResvStart As System.Windows.Forms.TextBox
+    Friend WithEvents TbTqResv As System.Windows.Forms.TextBox
+    Friend WithEvents Label7 As System.Windows.Forms.Label
+    Friend WithEvents Label5 As System.Windows.Forms.Label
+    Friend WithEvents Label4 As System.Windows.Forms.Label
+    Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox
+    Friend WithEvents TbStartAcc As System.Windows.Forms.TextBox
+    Friend WithEvents Label11 As System.Windows.Forms.Label
+    Friend WithEvents TbStartSpeed As System.Windows.Forms.TextBox
+    Friend WithEvents Label9 As System.Windows.Forms.Label
+    Friend WithEvents Label10 As System.Windows.Forms.Label
+    Friend WithEvents Label8 As System.Windows.Forms.Label
+    Friend WithEvents TbShiftTime As System.Windows.Forms.TextBox
+    Friend WithEvents Label12 As System.Windows.Forms.Label
+    Friend WithEvents Label13 As System.Windows.Forms.Label
+    Friend WithEvents ChSkipGears As System.Windows.Forms.CheckBox
 End Class
diff --git a/VECTO/GUI/F_GBX.resx b/VECTO/GUI/F_GBX.resx
index 0fe8f2f4c177ab96c400c3f96be83418ef0d4180..1e9de07a209f22e126466151c78df21025af6f19 100644
--- a/VECTO/GUI/F_GBX.resx
+++ b/VECTO/GUI/F_GBX.resx
@@ -112,18 +112,18 @@
     <value>2.0</value>
   </resheader>
   <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+  <metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
-  <metadata name="StatusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+  <metadata name="StatusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>259, 21</value>
   </metadata>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
diff --git a/VECTO/GUI/F_GBX.vb b/VECTO/GUI/F_GBX.vb
index 8447b3bbe7c2f474fe2eddc545794f7355cf5c90..af2a97be84e007d9150e04b1c403649b22af085e 100644
--- a/VECTO/GUI/F_GBX.vb
+++ b/VECTO/GUI/F_GBX.vb
@@ -104,6 +104,15 @@
             lvi.ForeColor = Color.Gray
         Next
 
+        Me.TbShiftPolyFile.Text = ""
+        Me.ChSkipGears.Checked = False
+        Me.TbTqResv.Text = ""
+        Me.TbShiftTime.Text = ""
+        Me.TbTqResvStart.Text = ""
+        Me.TbStartSpeed.Text = ""
+        Me.TbStartAcc.Text = ""
+
+
         GbxFile = ""
         Me.Text = "GBX Editor"
         Me.LbStatus.Text = ""
@@ -141,6 +150,15 @@
             End If
         Next
 
+        Me.TbShiftPolyFile.Text = GBX0.gsFile(True)
+        Me.ChSkipGears.Checked = GBX0.gs_SkipGears
+        Me.TbTqResv.Text = GBX0.gs_TorqueResv.ToString
+        Me.TbShiftTime.Text = GBX0.gs_ShiftTime.ToString
+        Me.TbTqResvStart.Text = GBX0.gs_TorqueResvStart.ToString
+        Me.TbStartSpeed.Text = GBX0.gs_StartSpeed.ToString
+        Me.TbStartAcc.Text = GBX0.gs_StartAcc.ToString
+
+
         fbGBX.UpdateHistory(file)
         Me.Text = fFILE(file, True)
         Me.LbStatus.Text = ""
@@ -181,6 +199,14 @@
             GBX0.GetrMap(i) = Me.LvGears.Items(i).SubItems(2).Text
         Next
 
+        GBX0.gsFile = fTextboxToNumString(Me.TbShiftPolyFile.Text)
+        GBX0.gs_TorqueResv = fTextboxToNumString(Me.TbTqResv.Text)
+        GBX0.gs_SkipGears = Me.ChSkipGears.Checked
+        GBX0.gs_ShiftTime = fTextboxToNumString(Me.TbShiftTime.Text)
+        GBX0.gs_TorqueResvStart = fTextboxToNumString(Me.TbTqResvStart.Text)
+        GBX0.gs_StartSpeed = fTextboxToNumString(Me.TbStartSpeed.Text)
+        GBX0.gs_StartAcc = fTextboxToNumString(Me.TbStartAcc.Text)
+
 
         If Not GBX0.SaveFile Then
             MsgBox("Cannot safe to " & file, MsgBoxStyle.Critical)
@@ -245,6 +271,36 @@
         Change()
     End Sub
 
+    Private Sub TbShiftPolyFile_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbShiftPolyFile.TextChanged
+        Change()
+    End Sub
+
+    Private Sub ChSkipGears_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles ChSkipGears.CheckedChanged
+        Change()
+    End Sub
+
+    Private Sub TbTqResv_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbTqResv.TextChanged
+        Change()
+    End Sub
+
+    Private Sub TbShiftTime_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbShiftTime.TextChanged
+        Change()
+    End Sub
+
+    Private Sub TbTqResvStart_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbTqResvStart.TextChanged
+        Change()
+    End Sub
+
+    Private Sub TbStartSpeed_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbStartSpeed.TextChanged
+        Change()
+    End Sub
+
+    Private Sub TbStartAcc_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbStartAcc.TextChanged
+        Change()
+    End Sub
+
+
+
 #End Region
 
     Private Sub ButOK_Click(sender As System.Object, e As System.EventArgs) Handles ButOK.Click
@@ -334,5 +390,14 @@
 
 #End Region
 
+    'Browse Shift Polygon File
+    Private Sub BtShiftPolyBrowse_Click(sender As System.Object, e As System.EventArgs) Handles BtShiftPolyBrowse.Click
+        Dim fb As cFileBrowser
+        fb = New cFileBrowser("ShiftPolygon", False, True)
+        If fb.OpenDialog(fFileRepl(Me.TbShiftPolyFile.Text, fPATH(GbxFile))) Then
+            Me.TbShiftPolyFile.Text = fFileWoDir(fb.Files(0), fPATH(GbxFile))
+        End If
+    End Sub
+
   
 End Class
diff --git a/VECTO/GUI/F_MAINForm.Designer.vb b/VECTO/GUI/F_MAINForm.Designer.vb
index 1d24866558136aede94848a267134a73647beb32..8ea5b567521149048a9f4be80659863664f60c8a 100644
--- a/VECTO/GUI/F_MAINForm.Designer.vb
+++ b/VECTO/GUI/F_MAINForm.Designer.vb
@@ -732,7 +732,7 @@ Partial Class F_MAINForm
         '
         Me.ConMenFilelist.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.SaveListToolStripMenuItem, Me.LoadListToolStripMenuItem, Me.LoadDefaultListToolStripMenuItem, Me.ClearListToolStripMenuItem, Me.ToolStripSeparator5, Me.RemovePathsToolStripMenuItem2})
         Me.ConMenFilelist.Name = "ConMenFilelist"
-        Me.ConMenFilelist.Size = New System.Drawing.Size(176, 120)
+        Me.ConMenFilelist.Size = New System.Drawing.Size(176, 142)
         '
         'SaveListToolStripMenuItem
         '
diff --git a/VECTO/GUI/F_MAINForm.vb b/VECTO/GUI/F_MAINForm.vb
index f380bc6ba4b38333cfeadb2f8a9730cafbafffae..fb933717e98b63fa943d277db52c0af0190845c6 100644
--- a/VECTO/GUI/F_MAINForm.vb
+++ b/VECTO/GUI/F_MAINForm.vb
@@ -179,7 +179,7 @@ Public Class F_MAINForm
 
         'Called when PHEM already running
         If PHEMworker.IsBusy Then
-            GUImsg(tMsgID.Err, "PHEM is already running!")
+            GUImsg(tMsgID.Err, "VECTO is already running!")
             Exit Sub
         End If
 
@@ -198,7 +198,7 @@ Public Class F_MAINForm
 
         'Wenn mehr als 100 Kombinationen in Batch fragen ob sekündliche Ausgabe |@@| When Batch resulting in more than 100 combinations per second, ask whether to dump-output  per second
         If (PHEMmode = tPHEMmode.ModeBATCH) And ((Me.LvGEN.CheckedItems.Count) * (Me.LvDRI.CheckedItems.Count) > 100) And Me.ChBoxModOut.Checked Then
-            Select Case MsgBox("You are about to run PHEM BATCH with " & (Me.LvGEN.CheckedItems.Count) * (Me.LvDRI.CheckedItems.Count) & " calculations!" & ChrW(10) & "Do you still want to write second-by-second results?", MsgBoxStyle.YesNoCancel)
+            Select Case MsgBox("You are about to run BATCH Mode with " & (Me.LvGEN.CheckedItems.Count) * (Me.LvDRI.CheckedItems.Count) & " calculations!" & ChrW(10) & "Do you still want to write second-by-second results?", MsgBoxStyle.YesNoCancel)
                 Case MsgBoxResult.No
                     Me.ChBoxModOut.Checked = False
                 Case MsgBoxResult.Cancel
@@ -208,7 +208,7 @@ Public Class F_MAINForm
         End If
 
         'Status
-        Status("Launching PHEM...")
+        Status("Launching VECTO...")
 
 
         'Define Job-0list
@@ -437,6 +437,7 @@ Public Class F_MAINForm
         If e.Error IsNot Nothing Then
             MsgBox("An Unexpected Error occurred!" & ChrW(10) & ChrW(10) & _
                      e.Error.Message.ToString, MsgBoxStyle.Critical, "Unexpected Error")
+            LOGfile.WriteLine(">>>Unexpected Error:" & e.Error.ToString())
             Me.Close()
         End If
 
@@ -591,6 +592,8 @@ Public Class F_MAINForm
         Dim x As Object
         Dim str As String
         Dim ComFile As String = ""
+        Dim vecFiles As New List(Of String)
+        Dim driFiles As New List(Of String)
 
         bBATCH = False
         bRUN = False
@@ -607,22 +610,46 @@ Public Class F_MAINForm
                 Case "-RUN"
                     bRUN = True
                 Case Else
-                    ComFile = str
+                    Select Case UCase(fEXT(str))
+                        Case ".VECTO"
+                            vecFiles.Add(str)
+                        Case ".VDRI"
+                            driFiles.Add(str)
+                        Case Else
+                            ComFile = str
+                    End Select
             End Select
         Next
 
-        'Mode switch
+        'Mode switch and load Driving Cycles
         If bBATCH Then
             Me.CBoxMODE.SelectedIndex = 1
+
+            If driFiles.Count > 0 Then
+                LvDRI.Items.Clear()
+                AddToListViewDRI(driFiles.ToArray)
+            End If
+
         Else
             Me.CBoxMODE.SelectedIndex = 0
         End If
 
-        'If file is specified
-        If ComFile <> sKey.NoFile Then OpenVectoFile(ComFile)
+        'Load Vecto files or open editor (if only one file)
+        If vecFiles.Count > 0 Then
+            If vecFiles.Count > 1 Or bRUN Then
+                LvGEN.Items.Clear()
+                AddToListViewGEN(vecFiles.ToArray)
+            Else
+                ComFile = vecFiles(0)
+            End If
+        End If
 
-        'Run
-        If bRUN Then PHEM_Launcher()
+        'Run or open file editor if file is specified
+        If bRUN Then
+            PHEM_Launcher()
+        Else
+            If ComFile <> sKey.NoFile Then OpenVectoFile(ComFile)
+        End If
 
     End Sub
 
diff --git a/VECTO/Input Files/cGBX.vb b/VECTO/Input Files/cGBX.vb
index f1c84e3ac310d9e75bbe5ace5b531178c41e6180..1b1c0019e3cddcb41a44a2acce4acf7bee21740b 100644
--- a/VECTO/Input Files/cGBX.vb	
+++ b/VECTO/Input Files/cGBX.vb	
@@ -22,6 +22,12 @@ Public Class cGBX
     Private gs_Dim As Integer
     Public gs_TorqueResv As Single
     Public gs_SkipGears As Boolean
+    Public gs_ShiftTime As Integer
+    Public gs_TorqueResvStart As Single
+    Public gs_StartSpeed As Single
+    Public gs_StartAcc As Single
+    'Public gs_Type As tGearbox 'not used yet
+
 
     Public Sub New()
         Dim i As Short
@@ -51,6 +57,12 @@ Public Class cGBX
         gs_Dim = -1
         gs_TorqueResv = 0
         gs_SkipGears = False
+        gs_ShiftTime = 0
+        gs_TorqueResvStart = 0
+        gs_StartSpeed = 0
+        gs_StartAcc = 0
+
+        'gs_Type = tGearbox.Manual
     End Sub
 
     Public Function SaveFile() As Boolean
@@ -87,6 +99,16 @@ Public Class cGBX
         file.WriteLine(CStr(gs_TorqueResv))
         file.WriteLine("c Skip gears")
         file.WriteLine(CStr(Math.Abs(CInt(gs_SkipGears))))
+        file.WriteLine("c Minimum time between two gear shifts [s]")
+        file.WriteLine(CStr(gs_ShiftTime))
+        file.WriteLine("c Start Torque Reserve [%]")
+        file.WriteLine(CStr(gs_TorqueResvStart))
+        file.WriteLine("c Vehicle speed with clutch fully closed [m/s]")
+        file.WriteLine(CStr(gs_StartSpeed))
+        file.WriteLine("c Acceleration during start [m/s2]")
+        file.WriteLine(CStr(gs_StartAcc))
+        'file.WriteLine("c Gearbox Type")
+        'file.WriteLine(CStr(CType(gs_Type, Integer)))
 
 
         file.Close()
@@ -138,6 +160,11 @@ Public Class cGBX
                 gs_file.Init(MyPath, file.ReadLine(0))
                 gs_TorqueResv = CSng(file.ReadLine(0))
                 gs_SkipGears = CBool(CInt(file.ReadLine(0)))
+                gs_ShiftTime = CInt(file.ReadLine(0))
+                gs_TorqueResvStart = CSng(file.ReadLine(0))
+                gs_StartSpeed = CSng(file.ReadLine(0))
+                gs_StartAcc = CSng(file.ReadLine(0))
+                'gs_Type = CType(CInt(file.ReadLine(0)), tGearbox)
             End If
 
         Catch ex As Exception
@@ -162,23 +189,31 @@ Public Class cGBX
 
         MsgSrc = "GBX/GSinit"
 
+        'Abort if Polygon Model is not activated
+        If Not DEV.UseGearShiftPolygon Then Return True
+
+        'Check if file exists
         If Not IO.File.Exists(gs_file.FullPath) Then
             WorkerMsg(tMsgID.Err, "Gear Shift Polygon File not found! '" & gs_file.FullPath & "'", MsgSrc)
             Return False
         End If
 
+        'Init file instance
         file = New cFile_V3
 
+        'Open file
         If Not file.OpenRead(gs_file.FullPath) Then
             WorkerMsg(tMsgID.Err, "Failed to load Gear Shift Polygon File! '" & gs_file.FullPath & "'", MsgSrc)
             Return False
         End If
 
+        'Clear lists
         gs_M.Clear()
         gs_nnDown.Clear()
         gs_nnUp.Clear()
         gs_Dim = -1
 
+        'Read file
         Try
             Do While Not file.EndOfFile
                 line = file.ReadLine
@@ -283,5 +318,18 @@ lbInt:
         End Set
     End Property
 
+    Public Property gsFile(Optional ByVal Original As Boolean = False) As String
+        Get
+            If Original Then
+                Return gs_file.OriginalPath
+            Else
+                Return gs_file.FullPath
+            End If
+        End Get
+        Set(value As String)
+            gs_file.Init(MyPath, value)
+        End Set
+    End Property
+
 
 End Class
diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb
index 3c704ec53769571f87cd4a7aa0defcbf0e6cb34b..836640b3058462fa774218b28d46d83e802173cd 100644
--- a/VECTO/MODcalc/cPower.vb
+++ b/VECTO/MODcalc/cPower.vb
@@ -36,6 +36,9 @@ Public Class cPower
     Private TracIntrTurnOff As Boolean
     Private TracIntrGear As Integer
 
+    Private LastGearChange As Integer
+    Private LastClutch As tEngClutch
+
     Public Sub New()
         bHEVinit = False
         bHorEVinit = False
@@ -482,6 +485,8 @@ lb10:
             KupplEta = 1
         End If
 
+        LastClutch = tEngClutch.Opened
+
         'Gear-shifting points for NEDC / FTP
         Select Case GEN.izykwael
             Case 0  'Nefzja = True
@@ -655,7 +660,12 @@ lbGschw:
                 If TracIntrTurnOff Then
 
                     Gear = TracIntrGear
-
+                    'If DEV.UseGearShiftPolygon Then
+                    '    Gear = fGearVECTO(jz)
+                    'Else
+                    '    Gear = fGearLKW(jz)
+                    'End If
+                    
                     If fnn(Vist, Gear, False) < Kuppln_norm And Pplus Then
                         Clutch = tEngClutch.Slipping
                     Else
@@ -707,7 +717,15 @@ lbGschw:
                 End If
 
                 'Gear shifting-model / gear input can open Clutch
-                If Gear < 1 Then Clutch = tEngClutch.Opened
+                If Gear < 1 Then
+                    Clutch = tEngClutch.Opened
+                Else
+                    If fnn(Vist, Gear, False) < Kuppln_norm And Pplus Then
+                        Clutch = tEngClutch.Slipping
+                    Else
+                        Clutch = tEngClutch.Closed
+                    End If
+                End If
 
             End If
 
@@ -1169,7 +1187,21 @@ lb_nOK:
 
             If Vh.Vsoll(jz) - Vist > 1.5 Then SecSpeedRed += 1
 
-            'Notify (abort if error)
+
+            LastGearChange = -1
+            For i = jz - 1 To 0 Step -1
+                If MODdata.Gear(i) <> 0 Then
+                    If MODdata.Gear(i) <> Gear Then
+                        LastGearChange = i
+                        Exit For
+                    End If
+                End If
+            Next
+
+
+            LastClutch = Clutch
+
+            'Messages
             If MODdata.ModErrors.MsgOutputAbort(jz + 1, MsgSrc) Then Return False
 
             If Clutch = tEngClutch.Closed And Nvorg Then
@@ -3225,50 +3257,92 @@ lbGschw:
 
     Private Function fStartGear(ByVal FirstSec As Boolean) As Integer
         Dim Gear As Integer
-        Dim ix As Integer
         Dim nn As Single
         Dim MsgSrc As String
+        Dim nU As Single
+        Dim nnUp As Single
+        Dim nnDown As Single
+        Dim Md As Single
+        Dim Pe As Single
+        Dim MdMax As Single
 
         MsgSrc = "StartGear"
 
-        If FirstSec AndAlso Vist <= 1.5 Then
+        If FirstSec AndAlso VehState0 <> tVehState.Stopped Then
 
-            Gear = -1
+            'Calculate gear when cycle starts with speed > 0
+            For Gear = VEH.ganganz To 1 Step -1
 
-            For ix = 1 To VEH.ganganz
-                nn = fnn(Vist, ix, False)
+                'rpm
+                nU = fnU(Vist, Gear, Clutch = tEngClutch.Slipping)
 
-                If (ix < VEH.ganganz) Then
-                    If (nn <= 0.8) Then
-                        Gear = ix
-                        Exit For
-                    End If
-                Else
-                    If (nn <= 1.06) Then
-                        Gear = ix
-                        Exit For
-                    End If
-                End If
-            Next ix
+                'normalized rpm
+                nn = (nU - VEH.nLeerl) / (VEH.nNenn - VEH.nLeerl)
 
-            If Gear = -1 Then
-                WorkerMsg(tMsgID.Err, "Failed to calculate intial gear!", MsgSrc)
-                Return -1
-            End If
+                'power demand - cut
+                Pe = Math.Min(fPeGearMod(Gear, 0) * VEH.Pnenn, FLD.Pfull(nn))
+                Pe = Math.Max(Pe, FLD.Pdrag(nn))
 
+                'torque demand
+                Md = Pe * 1000 / (nU * 2 * Math.PI / 60)
 
-            Return Gear
+                'Up/Downshift rpms
+                nnUp = GBX.fGSnnUp(Md)
+                nnDown = GBX.fGSnnDown(Md)
+
+                'Max torque
+                MdMax = FLD.Pfull(nn) * 1000 / (nU * 2 * Math.PI / 60)
+
+                'Find highest gear with rpm below Upshift-rpm and with enough torque reserve 
+                If nn < nnUp And 1 - Md / MdMax >= GBX.gs_TorqueResv / 100 Then
+                    Exit For
+                ElseIf nn > nnUp And Gear < VEH.ganganz Then
+                    MODdata.ModErrors.GSextrapol = ""
+                    Return Gear + 1
+                End If
+
+            Next
 
         Else
 
             'Calculate Start Gear 
-            Return 1
+
+            'TEST
+            'Return 1
+            'TEST
+
+
+            For Gear = VEH.ganganz To 1 Step -1
+
+                'rpm at 1.8m/s
+                nU = 1.8 * 60.0 * VEH.AchsI * VEH.Igetr(Gear) / (VEH.Dreifen * Math.PI)
+
+                'normalized rpm
+                nn = (nU - VEH.nLeerl) / (VEH.nNenn - VEH.nLeerl)
+
+                'power demand
+                Pe = Math.Min(fPeGearMod(Gear, 0) * VEH.Pnenn, FLD.Pfull(nn))
+                Pe = Math.Max(Pe, FLD.Pdrag(nn))
+
+                'torque demand
+                Md = Pe * 1000 / (nU * 2 * Math.PI / 60)
+
+                'Up/Downshift rpms
+                nnUp = GBX.fGSnnUp(Md)
+                nnDown = GBX.fGSnnDown(Md)
+
+                If nn > nnDown And nU >= VEH.nLeerl Then Exit For
+            Next
 
         End If
 
-    End Function
+        MODdata.ModErrors.GSextrapol = ""
+
+        Return Gear
 
 
+    End Function
+
     Private Function fGearVECTO(ByVal t As Integer) As Integer
         Dim nU As Single
         Dim nn As Single
@@ -3281,6 +3355,17 @@ lbGschw:
         Dim MdMax As Single
         Dim LastPeNorm As Single
 
+        Dim iphase As Int16
+        Dim iphase0 As Int16
+        Dim itgangw As Integer
+        Dim i As Integer
+        Dim bCheck As Boolean
+        Dim Pjetzt As Single
+        Dim Pvorher As Single
+        Dim a As Single
+        Dim b As Single
+        Dim tx As Int16
+
         'First time step: Starting gear 
         If t = 0 Then Return fStartGear(True)
 
@@ -3294,7 +3379,32 @@ lbGschw:
         LastPeNorm = MODdata.Pe(t - 1)
 
         'Previous Gear
-        LastGear = MODdata.Gear(t - 1)
+        tx = 1
+        LastGear = 0
+        Do While LastGear = 0 And t - tx > -1
+            LastGear = MODdata.Gear(t - tx)
+            tx += 1
+        Loop
+
+        'No gear change 3s after last one
+        If t - LastGearChange <= 3 Then Return LastGear
+
+        'During start (clutch slipping) no gear shift
+        If LastClutch = tEngClutch.Slipping And VehState0 = tVehState.Acc Then Return LastGear
+
+        ''Search for last Gear-change
+        'itgangw = 0
+        'For i = t - 1 To 1 Step -1
+        '    If MODdata.Gear(i) <> MODdata.Gear(i - 1) Then
+        '        itgangw = i
+        '        Exit For
+        '    End If
+        'Next
+
+        ''Maximum permissible Gear-shifts every 3 seconds:
+        'If t - itgangw <= 3 And t > 2 Then
+        '    Return LastGear    '<<< no further checks!!!
+        'End If
 
         'Current rpm with previous gear
         nU = fnU(Vist, LastGear, Clutch = tEngClutch.Slipping)
@@ -3325,7 +3435,10 @@ lbGschw:
                 Md = Pe * 1000 / (nU * 2 * Math.PI / 60)
                 MdMax = FLD.Pfull(nn, LastPeNorm) * 1000 / (nU * 2 * Math.PI / 60)
 
-                Do While 1 - Md / MdMax >= GBX.gs_TorqueResv / 100 AndAlso Gear < VEH.ganganz AndAlso fnn(Vist, Gear + 1, False) > nnDown
+                nnUp = GBX.fGSnnUp(Md)
+                nnDown = GBX.fGSnnDown(Md)
+
+                Do While 1 - Md / MdMax >= GBX.gs_TorqueResv / 100 AndAlso Gear < VEH.ganganz AndAlso fnn(Vist, Gear + 1, False) > nnDown + 0.1 * (nnUp - nnDown)
                     Gear += 1
                     nU = fnU(Vist, Gear, False)
                     nn = (nU - VEH.nLeerl) / (VEH.nNenn - VEH.nLeerl)
@@ -3346,8 +3459,80 @@ lbGschw:
 
         End If
 
+        'If GearCorrection is OFF then return here
+        If Not DEV.GearCorrection Then Return Gear
+
+        'Search for last Gear-change
+        itgangw = 0
+        For i = t - 1 To 1 Step -1
+            If MODdata.Gear(i) <> MODdata.Gear(i - 1) Then
+                itgangw = i
+                Exit For
+            End If
+        Next
+
+        'Maximum permissible Gear-shifts every 3 seconds:
+        If t - itgangw <= 3 And t > 2 Then
+            Return LastGear    '<<< no further checks!!!
+        End If
+
+        'Checks to Purge non-sensible Gear-shift:
+        'Division into "IPhase(j)" stages: Acceleration(=1), Deceleration(=2) and Cruise(=3):
+        iphase = 0
+        If t > 1 Then
+            Select Case (MODdata.Vh.a(t - 2) + MODdata.Vh.a(t - 1) + MODdata.Vh.a(t)) / 3
+                Case Is >= 0.125
+                    iphase = 1
+                Case Is <= -0.125
+                    iphase = 2
+                Case Else
+                    iphase = 3
+            End Select
+        End If
+
+        iphase0 = 0
+        If t > 3 Then
+            Select Case (MODdata.Vh.a(t - 3) + MODdata.Vh.a(t - 2) + MODdata.Vh.a(t - 1)) / 3
+                Case Is >= 0.125
+                    iphase0 = 1
+                Case Is <= -0.125
+                    iphase0 = 2
+                Case Else
+                    iphase0 = 3
+            End Select
+        End If
+
+        'Cruise-phases:
+        'As long Speed-change since last Gear-shift is below 6% and Pe/Pnom below 6% then do not Gear-shift:
+        'Deceleration-phases: Upshift suppressed
+        'Acceleration phases: Downshift suppressed
+        bCheck = False
+        Pjetzt = fPeGearModvD(t)
+        Pvorher = MODdata.Pe(itgangw)
+        If MODdata.Vh.V(itgangw) = 0 Then
+            a = Math.Abs(Vist / 0.0001 - 1)
+        Else
+            a = Math.Abs(Vist / MODdata.Vh.V(itgangw) - 1)
+        End If
+        If Pvorher = 0 Then
+            b = Math.Abs(Pjetzt / 0.0001 - 1)
+        Else
+            b = Math.Abs(Pjetzt / Pvorher - 1)
+        End If
+        If iphase = 3 And a < 0.06 And b < 0.06 Then bCheck = True
+        If (iphase = 1) And Gear < MODdata.Gear(t - 1) And iphase0 = 1 Then bCheck = True
+        If (iphase = 2) And Gear > MODdata.Gear(t - 1) Then bCheck = True
+        If bCheck Then Gear = LastGear
+
+        'Shifting from 2nd to 1st Gear is suppressed when v > 1.5 m/s
+        'NEU LUZ 040210: Hochschalten nur wenn im 2. Gang über Kuppeldrehzahl |@@| NEW LUZ 040210: Upshifting only when in 2nd Gear over the Clutch-revolutions
+        If Gear = 1 And LastGear > 1 And Vist >= 1.5 Then
+            If fnn(Vist, 2, False) > Kuppln_norm Then Gear = 2
+        End If
+
         Return Gear
 
+
     End Function
 
     Private Function fGearPKW(ByVal t As Integer) As Integer
diff --git a/VECTO/M_MAIN.vb b/VECTO/M_MAIN.vb
index 252f0e3649cbbcc1d62b9d0f54306dee2b194941..2dec9f1aca694d33d5b9659f26fc2c6a7999a8b5 100644
--- a/VECTO/M_MAIN.vb
+++ b/VECTO/M_MAIN.vb
@@ -54,10 +54,10 @@ Module M_MAIN
         'Specify Mode and Notification-msg
         Select Case PHEMmode
             Case tPHEMmode.ModeSTANDARD
-                WorkerMsg(tMsgID.Normal, "Starting PHEM STANDARD...", MsgSrc)
+                WorkerMsg(tMsgID.Normal, "Starting VECTO STANDARD...", MsgSrc)
                 CyclesDim = 0
             Case tPHEMmode.ModeBATCH
-                WorkerMsg(tMsgID.Normal, "Starting PHEM BATCH...", MsgSrc)
+                WorkerMsg(tMsgID.Normal, "Starting VECTO BATCH...", MsgSrc)
                 CyclesDim = JobCycleList.Count - 1
             Case tPHEMmode.ModeADVANCE
                 WorkerMsg(tMsgID.Normal, "Starting PHEM ADVANCE...", MsgSrc)
diff --git a/VECTO/VECTO_Global.vb b/VECTO/VECTO_Global.vb
index bbcdd486b295993716297d1171a5f68ddcb3cb83..7bb1693c1eb7f4fc2c7d6929ec0cfa33e2112246 100644
--- a/VECTO/VECTO_Global.vb
+++ b/VECTO/VECTO_Global.vb
@@ -349,7 +349,7 @@ Module VECTO_Global
 
         LOGfile.WriteLine("------------------------------------------------------------------------------------------")
         LOGfile.WriteLine("Starting Session " & Now)
-        LOGfile.WriteLine("PHEM " & VECTOvers)
+        LOGfile.WriteLine("VECTO " & VECTOvers)
 
     End Sub
 
diff --git a/VECTO/VECTO_Types.vb b/VECTO/VECTO_Types.vb
index 21bf7f21b33b262f86b2b3268eb623e728049358..b3cf51627403908e38de1051d1749d99e68e0388 100644
--- a/VECTO/VECTO_Types.vb
+++ b/VECTO/VECTO_Types.vb
@@ -172,6 +172,13 @@ Public Enum tRtType
     Secondary = 2
 End Enum
 
+Public Enum tGearbox
+    Manual = 0
+    SemiAutomatic = 1
+    Automatic = 2
+End Enum
+
+
 
 
 #Region "VECTO Classifications"
diff --git a/VECTO/cDEV.vb b/VECTO/cDEV.vb
index 71de768152fedaaa6b8bba416173b56b4f97953b..d82b92c66acd7c8c6e2225c3975d377e09889930 100644
--- a/VECTO/cDEV.vb
+++ b/VECTO/cDEV.vb
@@ -8,6 +8,7 @@ Public Class cDEV
     Private iOptionsDim As Integer
 
     Public UseGearShiftPolygon As Boolean
+    Public GearCorrection As Boolean
 
 
     '**************************************************************************************************************
@@ -116,6 +117,10 @@ Public Class cDEV
         Conf0.BoolVal = False
         MyOptions.Add("GearShiftPoly", Conf0)
 
+        Conf0 = New cDEVoption(tDEVconfType.tBoolean, "Gear Correcion (gear shift polygons model only!)", False)
+        Conf0.BoolVal = False
+        MyOptions.Add("GearCorrection", Conf0)
+
 
         '**************************** END: Parameters Configuration '*****************************
         '*****************************************************************************************
@@ -128,6 +133,7 @@ Public Class cDEV
     'Initialize the actual Config-Parameters from MyConfigs list
     Public Sub SetOptions()
         UseGearShiftPolygon = MyOptions("GearShiftPoly").BoolVal
+        GearCorrection = MyOptions("GearCorrection").BoolVal
     End Sub
 
     'Demo for Delegate Function
diff --git a/VECTO/cERG.vb b/VECTO/cERG.vb
index c00ddd2d5c288126abc5b959007b5864e3fd1ab6..cebffc99dd339021017d501eb3824395f9e7e377 100644
--- a/VECTO/cERG.vb
+++ b/VECTO/cERG.vb
@@ -736,6 +736,12 @@ Class cERG
 
         MsgSrc = "SUMALL/Init"
 
+        'Check if file exists
+        If Not IO.File.Exists(GenFile) Then
+            WorkerMsg(tMsgID.Err, "Job file not found! (" & GenFile & ")", MsgSrc)
+            Return False
+        End If
+
         'Define Output-path
         If (PHEMmode = tPHEMmode.ModeBATCH) Then
             Select Case UCase(Cfg.BATCHoutpath)