diff --git a/VectoCore/VectoCore/OutputData/SumDataFields.cs b/VectoCore/VectoCore/OutputData/SumDataFields.cs
index fdb3c8571414edd849779a49bcae432897775334..0e3ffc30fb2f72c874eb6f3cb6d16fa04c656dfe 100644
--- a/VectoCore/VectoCore/OutputData/SumDataFields.cs
+++ b/VectoCore/VectoCore/OutputData/SumDataFields.cs
@@ -56,9 +56,7 @@ namespace TUGraz.VectoCore.OutputData
 		public const string GEARBOX_MANUFACTURER = "Gearbox manufacturer [-]";
 		public const string GEARBOX_MODEL = "Gearbox model [-]";
 		public const string GEARBOX_TYPE = "Gearbox type [-]";
-		public const string GEAR_RATIO_FIRST_GEAR = "Gear ratio first gear [-]";
-		public const string GEAR_RATIO_LAST_GEAR = "Gear ratio last gear [-]";
-
+		
 		public const string TORQUECONVERTER_MANUFACTURER = "Torque converter manufacturer [-]";
 		public const string TORQUECONVERTER_MODEL = "Torque converter model [-]";
 
@@ -219,6 +217,8 @@ namespace TUGraz.VectoCore.OutputData
 		public const string BRAKING_TIME_SHARE = "BrakingTimeShare [%]";
 
 		public const string TIME_SHARE_PER_GEAR_FORMAT = "Gear {0} TimeShare [%]";
+		public const string RATIO_PER_GEAR_FORMAT = "Gear {0} Ratio [-]";
+		public const string P2_5_RATIO_PER_GEAR_FORMAT = "Gear {0} P2.5 Ratio [-]";
 
 		public const string NUM_AXLES_DRIVEN = "Number axles vehicle driven [-]";
 		public const string NUM_AXLES_NON_DRIVEN = "Number axles vehicle non-driven [-]";
@@ -475,15 +475,6 @@ namespace TUGraz.VectoCore.OutputData
 			{ GEARBOX_CERTIFICATION_NUMBER, SumFunc((r, m) => r.GearboxData?.CertificationMethod == CertificationMethod.StandardValues ? "" : r.GearboxData?.CertificationNumber)},
 			{ GEARBOX_CERTIFICATION_METHOD, SumFunc((r, m) => r.GearboxData?.CertificationMethod.GetName())},
 
-			{ GEAR_RATIO_FIRST_GEAR, SumFunc((r, m) => r.GearboxData?.Gears.Count > 0
-					? (double.IsNaN(r.GearboxData.Gears.First().Value.Ratio)
-						? (ConvertedSI)r.GearboxData.Gears.First().Value.TorqueConverterRatio.SI<Scalar>()
-						: (ConvertedSI)r.GearboxData.Gears.First().Value.Ratio.SI<Scalar>())
-					: 0.SI<Scalar>())}, 
-			{ GEAR_RATIO_LAST_GEAR, SumFunc((r, m) => r.GearboxData?.Gears.Count > 0
-				? (ConvertedSI) r.GearboxData.Gears.Last().Value.Ratio.SI<Scalar>()
-				: (ConvertedSI)0.SI<Scalar>())},
-
 			// torque converter
 			{ TORQUECONVERTER_MANUFACTURER, SumFunc((r, m) => r.GearboxData?.TorqueConverterData?.Manufacturer ?? Constants.NOT_AVAILABLE)},
 			{ TORQUECONVERTER_MODEL, SumFunc((r, m) => r.GearboxData?.TorqueConverterData?.ModelName ?? Constants.NOT_AVAILABLE)},
diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
index 1ae05ed90a8415b17e17d6c6accff89c18188031..9444ca21465d931ec7a490af76bb5ea28a98b932 100644
--- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
@@ -166,8 +166,6 @@ namespace TUGraz.VectoCore.OutputData
 			Tuple.Create(SumDataFields.GEARBOX_CERTIFICATION_METHOD, typeof(string)),
 			Tuple.Create(SumDataFields.GEARBOX_CERTIFICATION_NUMBER, typeof(string)),
 			Tuple.Create(SumDataFields.GEARBOX_TYPE, typeof(string)),
-			Tuple.Create(SumDataFields.GEAR_RATIO_FIRST_GEAR, typeof(ConvertedSI)),
-			Tuple.Create(SumDataFields.GEAR_RATIO_LAST_GEAR, typeof(ConvertedSI)),
 			Tuple.Create(SumDataFields.TORQUECONVERTER_MANUFACTURER, typeof(string)),
 			Tuple.Create(SumDataFields.TORQUECONVERTER_MODEL, typeof(string)),
 			Tuple.Create(SumDataFields.TORQUE_CONVERTER_CERTIFICATION_METHOD, typeof(string)),
@@ -407,7 +405,7 @@ namespace TUGraz.VectoCore.OutputData
 		protected IList<string> GearColumns = new List<string>();
 		protected IList<string> AuxColumns = new List<string>();
 		protected IList<string> EmColumns = new List<string>();
-
+		protected IList<string> GearRatioColumns = new List<string>();
 
 		/// <summary>
 		/// Initializes a new instance of the <see cref="SummaryDataContainer"/> class.
@@ -444,11 +442,13 @@ namespace TUGraz.VectoCore.OutputData
 						? GearboxColumns_AT
 						: GearboxColumns);
 					CreateGearTimeShareColumns(runData.GearboxData.GearList);
+					CreateGearRatioColumns(runData);
 					break;
 				case IGearbox _ when runData.JobType == VectoSimulationJobType.IEPC_E:
 				case IGearbox _ when runData.JobType == VectoSimulationJobType.IEPC_S:
 					CreateColumns(IEPCTransmissionColumns);
 					CreateGearTimeShareColumns(runData.GearboxData.GearList);
+					CreateGearRatioColumns(runData);
 					break;
 				case VTPCycle _:
 					CreateColumns(VTPCycleColumns);
@@ -567,6 +567,32 @@ namespace TUGraz.VectoCore.OutputData
 			}
 		}
 
+		private void CreateGearRatioColumns(VectoRunData runData)
+		{
+			lock (Table) {
+				var gears = runData.GearboxData.GearList;
+				var gearNumbers = new uint[] { }.Concat(gears.Select(x => x.Gear)).Distinct().OrderBy(x => x);
+				
+				var gearColNames = gearNumbers
+					.Select(x => string.Format(SumDataFields.RATIO_PER_GEAR_FORMAT, x))
+					.Where(x => !Table.Columns.Contains(x)).Select(x => new DataColumn(x, typeof(ConvertedSI)));
+					
+				if (runData.ElectricMachinesData.Any(x => x.Item1 == PowertrainPosition.HybridP2_5)) {
+					gearColNames = gearColNames.Concat(
+						gearNumbers
+							.Select(x => string.Format(SumDataFields.P2_5_RATIO_PER_GEAR_FORMAT, x))
+							.Where(x => !Table.Columns.Contains(x)).Select(x => new DataColumn(x, typeof(ConvertedSI))));
+				}
+
+				var gearColumnsArray = gearColNames.ToArray();
+
+				Table.Columns.AddRange(gearColumnsArray);
+				
+				foreach (var gearColName in gearColumnsArray) {
+					GearRatioColumns.Add(gearColName.ColumnName);
+				}
+			}
+		}
 
 		protected internal void CreateColumns(Tuple<string, Type>[] cols)
 		{
@@ -629,9 +655,12 @@ namespace TUGraz.VectoCore.OutputData
 				SumDataFields.NUM_AXLES_TRAILER,
 				SumDataFields.GEARBOX_MANUFACTURER,
 				SumDataFields.GEARBOX_MODEL,
-				SumDataFields.GEARBOX_TYPE,
-				SumDataFields.GEAR_RATIO_FIRST_GEAR,
-				SumDataFields.GEAR_RATIO_LAST_GEAR,
+				SumDataFields.GEARBOX_TYPE
+			});
+
+			cols.AddRange(GearRatioColumns);
+
+			cols.AddRange(new[] {
 				SumDataFields.TORQUECONVERTER_MANUFACTURER,
 				SumDataFields.TORQUECONVERTER_MODEL,
 				SumDataFields.RETARDER_MANUFACTURER,
@@ -644,6 +673,7 @@ namespace TUGraz.VectoCore.OutputData
 				SumDataFields.AXLE_MODEL,
 				SumDataFields.AXLE_RATIO
 			});
+
             cols.AddRange(new[] {
                 Constants.Auxiliaries.IDs.SteeringPump, 
 				Constants.Auxiliaries.IDs.Fan,
@@ -698,7 +728,7 @@ namespace TUGraz.VectoCore.OutputData
 
 
 
-        cols.AddRange(new[] {
+			cols.AddRange(new[] {
 				SumDataFields.REESS_StartSoC,
 				SumDataFields.REESS_EndSoC,
 				SumDataFields.REESS_DeltaEnergy,
@@ -786,6 +816,7 @@ namespace TUGraz.VectoCore.OutputData
 				SumDataFields.AIRDRAG_CERTIFICATION_METHOD, 
 			});
 			cols.AddRange(GearColumns);
+
 			return cols.Where(x => Table.Columns.Contains(x)).ToArray();
 		}
 
@@ -1061,6 +1092,7 @@ namespace TUGraz.VectoCore.OutputData
 
 			if ((runData.GearboxData?.Gears.Count ?? 0) > 0) {
 				WriteGearshiftStats(modData, row, (uint?)runData.GearboxData?.Gears.Count ?? 0u);
+				WriteGearRatios(row, runData);
 			}
 
 			AddResultDictionary(row);
@@ -1223,6 +1255,27 @@ namespace TUGraz.VectoCore.OutputData
 			}
 		}
 
+		private void WriteGearRatios(Dictionary<string, object> row, VectoRunData runData)
+		{ 
+			var emData = runData.ElectricMachinesData.Any(x => x.Item1 == PowertrainPosition.HybridP2_5)
+				? runData.ElectricMachinesData.First(x => x.Item1 == PowertrainPosition.HybridP2_5).Item2
+				: null;
+
+			foreach (var gear in runData.GearboxData.Gears) {
+				var colName = string.Format(SumDataFields.RATIO_PER_GEAR_FORMAT, gear.Key);
+
+				row[colName] = (double.IsNaN(gear.Value.Ratio)
+								? (ConvertedSI)gear.Value.TorqueConverterRatio.SI<Scalar>()
+								: (ConvertedSI)gear.Value.Ratio.SI<Scalar>());
+
+				if (emData != null) {
+					var colNameP2_5 = string.Format(SumDataFields.P2_5_RATIO_PER_GEAR_FORMAT, gear.Key);
+
+					row[colNameP2_5] = (ConvertedSI)emData.RatioPerGear[gear.Key - 1].SI<Scalar>();
+				}
+			}
+		}
+
 		public static string ReplaceNotAllowedCharacters(string text)
 		{
 			return text.Replace('#', '_').Replace(',', '_').Replace('\n', '_').Replace('\r', '_');