diff --git a/VECTO/Input Files/cGBX.vb b/VECTO/Input Files/cGBX.vb
index abd1335fecf263037ab906d848ada0d0868c1777..f013de2d7f26007b0b1580594eb4c56d16bb6452 100644
--- a/VECTO/Input Files/cGBX.vb	
+++ b/VECTO/Input Files/cGBX.vb	
@@ -433,6 +433,8 @@ Public Class cGBX
 		Dim Brake As Boolean
 		Dim FirstDone As Boolean
 
+		Dim rpmLimit As Single
+
 		Dim MsgSrc As String
 
 		MsgSrc = "GBX/TCiteration/t= " & t + 1
@@ -443,6 +445,16 @@ Public Class cGBX
 		Brake = False
 		TCNeutral = False
 
+		'TC rpm limit
+		If DEV.TClimitOn Then
+			If MODdata.Vh.a(t) >= DEV.TCaccmin Then
+				rpmLimit = DEV.TClimit
+			Else
+				rpmLimit = ENG.Nrated
+			End If
+		Else
+			rpmLimit = ENG.Nrated
+		End If
 
 		'Power to torque
 		Mout = nPeToM(nUout, PeOut)
@@ -461,7 +473,7 @@ Public Class cGBX
 			nuMax = Math.Min(TCnu(TCdim), nUout/ENG.Nidle)
 
 		Else
-			nuMin = Math.Max(nUout/DEV.TClimit, TCnu(0))
+			nuMin = Math.Max(nUout / rpmLimit, TCnu(0))
 			nuMax = Math.Min(TCnuMax, nUout/ENG.Nidle)
 		End If
 
diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb
index 035f8ab5cc1db25d4751bba5b6b38eab7634092b..241f87321f801143461e36b9d4ebf9f1aa11dec6 100644
--- a/VECTO/MODcalc/cPower.vb
+++ b/VECTO/MODcalc/cPower.vb
@@ -1962,18 +1962,27 @@ Public Class cPower
 
 		'Upshift
 		If PlusGearLockUp Then
-			If nUnext > nUup AndAlso Pe <= FLD(LastGear + 1).Pfull(nUnext) Then
-				Return LastGear + 1
+			'C-to-L / L-to-L
+			If DEV.TCshiftModeNew Then
+				If _
+					nUnext > nUup AndAlso
+					fPeGearMod(LastGear + 1, t, MODdata.Vh.V(t), DEV.TCaccmin, Grad) <= FLD(LastGear + 1).Pfull(nUnext) Then
+					Return LastGear + 1
+				End If
+			Else
+				If nUnext > nUup AndAlso Pe <= FLD(LastGear + 1).Pfull(nUnext) Then
+					Return LastGear + 1
+				End If
 			End If
 		Else
-			'1C-to-2C
+			'C-to-C
 			If LastGear < GBX.GearCount Then
 
-				iRatio = GBX.Igetr(LastGear + 1)/GBX.Igetr(LastGear)
+				iRatio = GBX.Igetr(LastGear + 1) / GBX.Igetr(LastGear)
 
 				If _
-					fnUout(Vact, LastGear + 1) > Math.Min(900, iRatio*(FLD(LastGear).N80h - 150)) AndAlso
-					FLD(LastGear + 1).Pfull(nU*iRatio) > 0.7*FLD(LastGear).Pfull(nU) Then
+					fnUout(Vact, LastGear + 1) > Math.Min(900, iRatio * (FLD(LastGear).N80h - 150)) AndAlso
+					FLD(LastGear + 1).Pfull(nU * iRatio) > 0.7 * FLD(LastGear).Pfull(nU) Then
 					Return LastGear + 1
 				End If
 			End If
diff --git a/VECTO/cDEV.vb b/VECTO/cDEV.vb
index 94e93d03daf627d94de14d2322f2440b1911583b..e2d9d00f7a5e165d0bd678f781f6a26663ad66b8 100644
--- a/VECTO/cDEV.vb
+++ b/VECTO/cDEV.vb
@@ -16,11 +16,12 @@ Public Class cDEV
 	Private MyOptions As Dictionary(Of String, cDEVoption)
 	Private iOptionsDim As Integer
 
+	Public AdvFormat As Boolean
 	Public TCiterPrec As Single
+	Public TClimitOn As Boolean
 	Public TClimit As Single
-
-
-	Public AdvFormat As Boolean
+	Public TCshiftModeNew As Boolean
+	Public TCaccmin As Single
 
 
 	'**************************************************************************************************************
@@ -136,14 +137,14 @@ Public Class cDEV
 
 		Conf0 = New cDEVoption(tDEVconfType.tSelection,
 								"Acceleration for AT Up-Shift power condition")
-		Conf0.AddMode("acc_target (old)")
-		Conf0.AddMode("acc_min (new)")
+		Conf0.AddMode("acc_target")	'0
+		Conf0.AddMode("acc_min")		'1
 		Conf0.ModeIndex = 1
 		MyOptions.Add("TCshiftMode", Conf0)
 
 
 		Conf0 = New cDEVoption(tDEVconfType.tSingleVal, "Minimum acceleration (acc_min) for TC rpm limit and AT-Shift [m/s²]")
-		Conf0.SingleVal = 0.02
+		Conf0.SingleVal = 0.025
 		MyOptions.Add("TCaccMin", Conf0)
 
 
@@ -158,7 +159,10 @@ Public Class cDEV
 	Public Sub SetOptions()
 		TCiterPrec = MyOptions("TCiterPrec").SingleVal
 		AdvFormat = MyOptions("AdvFormat").BoolVal
+		TClimitOn = MyOptions("TClimitOn").BoolVal
 		TClimit = MyOptions("TClimit").SingleVal
+		TCshiftModeNew = (MyOptions("TCshiftMode").ModeIndex = 1)
+		TCaccmin = MyOptions("TCaccMin").SingleVal
 	End Sub
 
 	'Demo for Delegate Function