diff --git a/VECTO/AdvancedAuxiliariesModule.vb b/VECTO/AdvancedAuxiliariesModule.vb
index 14a9f022a0e695b881e0074854abe6d99f53768a..8a2dcf34e31c60d9486d6a143d8a3aba97d267ba 100644
--- a/VECTO/AdvancedAuxiliariesModule.vb
+++ b/VECTO/AdvancedAuxiliariesModule.vb
@@ -57,7 +57,7 @@ Module AdvancedAuxiliariesModule
 
 		'			o = Activator.CreateInstance(fileNameWoExtentsion, "VectoAuxiliaries.AdvancedAuxiliaries")
 
-					busAux = new BusAuxiliaries()
+					busAux = new BusAuxiliaries(Nothing)
 
 					Dim advancedAuxiliary As AdvancedAuxiliary = New AdvancedAuxiliary(busAux.AuxiliaryName,
 																						busAux.AuxiliaryVersion,
@@ -100,7 +100,7 @@ Module AdvancedAuxiliariesModule
 
 		Try
 			'o = Activator.CreateInstance(chosenAssembly.Value.AssemblyName, "VectoAuxiliaries.AdvancedAuxiliaries")
-			busAux = New BusAuxiliaries() ' DirectCast(o.Unwrap, IAdvancedAuxiliaries)
+			busAux = New BusAuxiliaries(Nothing) ' DirectCast(o.Unwrap, IAdvancedAuxiliaries)
 
 			Configure(filePath, vectoFilePath)
 
@@ -186,7 +186,7 @@ Module AdvancedAuxiliariesModule
 		'Open Assembly and invoke the validation using the paths supplied.
 		Try
 			'o = Activator.CreateInstance(chosenAssembly.Value.AssemblyName, "VectoAuxiliaries.AdvancedAuxiliaries")
-			busAux = New BusAuxiliaries()  ' DirectCast(o.Unwrap, IAdvancedAuxiliaries)
+			busAux = New BusAuxiliaries(Nothing)  ' DirectCast(o.Unwrap, IAdvancedAuxiliaries)
 
 			'result = busAux.ValidateAAUXFile(absoluteAAuxPath, message)
 
diff --git a/VECTOAux/VectoAuxiliariesTests/IntegrationTests/AuxDemandTest.vb b/VECTOAux/VectoAuxiliariesTests/IntegrationTests/AuxDemandTest.vb
index 8a90f0806fc8ca56effbe82c401c696e2e5bb087..743a29669be3df965dd2b8a83014b22a5eb0b54f 100644
--- a/VECTOAux/VectoAuxiliariesTests/IntegrationTests/AuxDemandTest.vb
+++ b/VECTOAux/VectoAuxiliariesTests/IntegrationTests/AuxDemandTest.vb
@@ -25,7 +25,7 @@ Namespace IntegrationTests
             Dim engineFCMapFilePath = "TestFiles\Integration\24t Coach.vmap"
             Dim auxFilePath = "TestFiles\Integration\AdvAuxTest.aaux"
 
-            Dim aux As BusAuxiliaries = New BusAuxiliaries
+            Dim aux As BusAuxiliaries = New BusAuxiliaries(Nothing)
 
             'aux.VectoInputs.Cycle = "Coach"
             'aux.VectoInputs.VehicleWeightKG = vehicleWeight.SI(Of Kilogram)()
@@ -75,7 +75,7 @@ Namespace IntegrationTests
             Dim engineFCMapFilePath = "TestFiles\Integration\24t Coach.vmap"
             Dim auxFilePath = "TestFiles\Integration\AdvAuxTest.aaux"
 
-            Dim aux As BusAuxiliaries = New BusAuxiliaries
+            Dim aux As BusAuxiliaries = New BusAuxiliaries(Nothing)
 
             'aux.VectoInputs.Cycle = "Coach"
             'aux.VectoInputs.VehicleWeightKG = 12000.SI(Of Kilogram)()
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb
index 5c227c571efd00083a3e367f4b60ade4c5b79156..772132e67c6ff961d1fd64132cab0042efa0c7b3 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb
@@ -46,18 +46,18 @@ Namespace UnitTests
             End Get
         End Property
 
-        Public ReadOnly Property FuelPerHBaseAdjusted As KilogramPerSecond Implements ISSMTOOL.FuelPerHBaseAdjusted
-            Get
-                Throw New NotImplementedException
-            End Get
-        End Property
+        'Public ReadOnly Property FuelPerHBaseAdjusted As KilogramPerSecond Implements ISSMTOOL.FuelPerHBaseAdjusted
+        '    Get
+        '        Throw New NotImplementedException
+        '    End Get
+        'End Property
 
-        Public ReadOnly Property EngineWasteHeatkW As Watt Implements ISSMTOOL.EngineWasteHeatkW
+        Public ReadOnly Property EngineWasteHeat As Watt Implements ISSMTOOL.EngineWasteHeat
 
 
-        Public Function FuelPerHBaseAsjusted(AverageUseableEngineWasteHeatKW As Watt) As KilogramPerSecond Implements ISSMTOOL.FuelPerHBaseAsjusted
+        Public Function AverageAuxHeaterPower(averageUseableEngineWasteHeat As Watt) As Watt Implements ISSMTOOL.AverageAuxHeaterPower
 
-            Return (0.5*(AverageUseableEngineWasteHeatKW.Value()*0.835).SI(Unit.SI.Liter.Per.Hour).Value()).SI (of KilogramPerSecond)
+            Return (0.5*(averageUseableEngineWasteHeat.Value()*0.835).SI(Unit.SI.Liter.Per.Hour).Value()).SI (of Watt)
         End Function
 
         Public Property SSMInputs As ISSMInputs Implements ISSMTOOL.SSMInputs
@@ -98,42 +98,42 @@ Namespace UnitTests
 	End Class
 
 
-	<TestFixture()>
-	Public Class M14Tests
+	'<TestFixture()>
+	'Public Class M14Tests
 
-        <OneTimeSetUp>
-        Public Sub RunBeforeAnyTests()
-            Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory)
-        End Sub
+ '       <OneTimeSetUp>
+ '       Public Sub RunBeforeAnyTests()
+ '           Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory)
+ '       End Sub
 
-		<Test()>
-		Public Sub ValuesTest()
+	'	<Test()>
+	'	Public Sub ValuesTest()
 
-			'Arrange
-			Dim ip1 As Double = 1000.0
-			Dim ip5 As Double = 3114
+	'		'Arrange
+	'		Dim ip1 As Double = 1000.0
+	'		Dim ip5 As Double = 3114
 
-			Dim expectedOut1 As Double = 1799.3334	' 780333.4 
-			Dim expectedOut2 As Double = 2.13093
+	'		Dim expectedOut1 As Double = 1799.3334	' 780333.4 
+	'		Dim expectedOut2 As Double = 2.13093
 
-			Dim m13 As New Mock(Of IM13)
-			Dim hvacSSM As New Mock(Of ISSMTOOL)
-			Dim signals As New Mock(Of ISignals)
-			Dim ssmMock As ISSMTOOL = New SSMToolMock()
+	'		Dim m13 As New Mock(Of IM13)
+	'		Dim hvacSSM As New Mock(Of ISSMTOOL)
+	'		Dim signals As New Mock(Of ISignals)
+	'		Dim ssmMock As ISSMTOOL = New SSMToolMock()
 
-			'Moq' Arrangements
-			m13.Setup(Function(x) x.WHTCTotalCycleFuelConsumption).Returns((ip1 / 1000).SI(Of Kilogram))
-			signals.Setup(Function(x) x.CurrentCycleTimeInSeconds).Returns(ip5)
+	'		'Moq' Arrangements
+	'		m13.Setup(Function(x) x.WHTCTotalCycleFuelConsumption).Returns((ip1 / 1000).SI(Of Kilogram))
+	'		signals.Setup(Function(x) x.CurrentCycleTimeInSeconds).Returns(ip5)
 
-            Dim fuel = New FuelData.Entry(FuelType.DieselCI, Nothing, 0.SI(of KilogramPerCubicMeter),1.0, 44800.SI(Unit.SI.Joule.Per.Gramm).Cast(Of JoulePerKilogramm), 44800.SI(Unit.SI.Joule.Per.Gramm).Cast(Of JoulePerKilogramm))
-			'Act
-			Dim m14 As New M14Impl(m13.Object, ssmMock, fuel, signals.Object)
+ '           Dim fuel = New FuelData.Entry(FuelType.DieselCI, Nothing, 0.SI(of KilogramPerCubicMeter),1.0, 44800.SI(Unit.SI.Joule.Per.Gramm).Cast(Of JoulePerKilogramm), 44800.SI(Unit.SI.Joule.Per.Gramm).Cast(Of JoulePerKilogramm))
+	'		'Act
+	'		Dim m14 As New M14Impl(m13.Object, ssmMock, fuel, signals.Object)
 
-			'Assert
-            Assert.AreEqual(expectedOut1.SI(Unit.SI.Gramm).Value(), m14.TotalCycleFC.Value(), 0.1)
-            'Assert.AreEqual(expectedOut2.SI(Of Liter).Value(), m14.TotalCycleFCLitres.Value(), 0.00001)
-		End Sub
-	End Class
+	'		'Assert
+ '           Assert.AreEqual(expectedOut1.SI(Unit.SI.Gramm).Value(), m14.TotalCycleFC.Value(), 0.1)
+ '           'Assert.AreEqual(expectedOut2.SI(Of Liter).Value(), m14.TotalCycleFCLitres.Value(), 0.00001)
+	'	End Sub
+	'End Class
 End Namespace
 
 
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb
index 56b3156fb0c888b68dd3957c59776b187940074d..86600d0caf4494cc52c99fe55850a774fabcd930 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb
@@ -91,7 +91,7 @@ Namespace UnitTests
             Dim auxInput as IBusAuxiliariesDeclarationData = nothing
 
             Dim dao = New DeclarationDataAdapterPrimaryBus()
-            Dim target As ISSMInputs = dao.CreateSSMModelParameters(auxInput, mission, FuelData.Diesel)
+            Dim target As ISSMInputs = dao.CreateSSMModelParameters(auxInput, mission, FuelData.Diesel, LoadingType.ReferenceLoad)
 
             If section = "BusParameterisation" Then
                 'BUS Parameterisation
@@ -599,7 +599,7 @@ Namespace UnitTests
 
             Dim dao = New DeclarationDataAdapterPrimaryBus()
             Dim target As SSMTOOL = New SSMTOOL(dao.CreateSSMModelParameters(auxInput, mission,
-                                                                             FuelData.Diesel))
+                                                                             FuelData.Diesel, LoadingType.ReferenceLoad))
 
             success = BusAuxWriter.SaveSSMConfig(target.SSMInputs, filePath)
             'success = target.Save(filePath)
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs
index 92834cd02c0640f1548511bab430522e8bf00d11..c5f46d8b7a4aa404213f9842218c7aa5f3655c17 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs
@@ -15,6 +15,8 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 
 		IEnvironmentalConditions EnvironmentalConditions { get; }
 
+		double NumberOfPassengers { get; }
+
 		IACSystem ACSystem { get; }
 
 		IVentilation Ventilation { get; }
diff --git a/VectoCommon/VectoCommon/Utils/SI.cs b/VectoCommon/VectoCommon/Utils/SI.cs
index c2819c156e45500a29cd3cce2a3e7ec3c35271f2..00fa62139a141fd4446c42f557e3d77242b57db5 100644
--- a/VectoCommon/VectoCommon/Utils/SI.cs
+++ b/VectoCommon/VectoCommon/Utils/SI.cs
@@ -751,6 +751,11 @@ namespace TUGraz.VectoCommon.Utils
 		{
 			return SIBase<JoulePerMeter>.Create(joule.Val / meter.Value());
 		}
+
+		public static Kilogram operator /(Joule j, JoulePerKilogramm jpkg)
+		{
+			return SIBase<Kilogram>.Create(j.Val /  jpkg.Value());
+		}
 	}
 
 	public class JoulePerNormLiter : SIBase<JoulePerNormLiter>
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
index c0eceb9aea0f51e5eb5d7b5bc2014188cd0ff16a..ad05529c3f64fcb944822b202b9d22c7c3b414b2 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
@@ -85,7 +85,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				PneumaticAuxillariesConfig = CreatePneumaticAuxConfig(runData.Retarder.Type),
 				Actuations = actuations,
 				SSMInputs = CreateSSMModelParameters(
-					vehicleData.Components.BusAuxiliaries, mission, FuelData.Diesel),
+					vehicleData.Components.BusAuxiliaries, mission, FuelData.Diesel, runData.Loading),
 				VehicleData = runData.VehicleData,
 			};
 
@@ -234,7 +234,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + ".VAUXBus." + resource), dragCurveFactorClutch);
 		}
 
-		public virtual ISSMInputs CreateSSMModelParameters(IBusAuxiliariesDeclarationData busAuxInputData, Mission mission, IFuelProperties heatingFuel)
+		public virtual ISSMInputs CreateSSMModelParameters(IBusAuxiliariesDeclarationData busAuxInputData, Mission mission, IFuelProperties heatingFuel, LoadingType loadingType)
 		{
 			var busParams = mission.BusParameter;
 
@@ -278,7 +278,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				UValue = DeclarationData.BusAuxiliaries.UValue(busParams.FloorType),
 				NumberOfPassengers =
 					DeclarationData.BusAuxiliaries.CalculateBusFloorSurfaceArea(hvacBusLength, busParams.VehicleWidth) *
-					busParams.PassengerDensity + 1, // add driver for 'heat input'
+					busParams.PassengerDensity * (loadingType == LoadingType.LowLoading ? mission.MissionType.GetPassengerDensityLowLoadFactor() : 1.0) + 1, // add driver for 'heat input'
 				VentilationRate = DeclarationData.BusAuxiliaries.VentilationRate(busParams.HVACConfiguration, false),
 				VentilationRateHeating = DeclarationData.BusAuxiliaries.VentilationRate(busParams.HVACConfiguration, true),
 
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs
index 745b314d41d825a8f63c2f7b1c7aedcb3e3fe2eb..cdb598b247d25fb671f6a477ec30a0917e8c6a3c 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs
@@ -120,10 +120,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			return retVal;
 		}
 
-		public override ISSMInputs CreateSSMModelParameters(
-			IBusAuxiliariesDeclarationData busAuxInputData, Mission mission, IFuelProperties heatingFuel)
+		public override ISSMInputs CreateSSMModelParameters(IBusAuxiliariesDeclarationData busAuxInputData, Mission mission, IFuelProperties heatingFuel, LoadingType loading)
 		{
-			var retVal = base.CreateSSMModelParameters(busAuxInputData, mission, heatingFuel) as SSMInputs;
+			var retVal = base.CreateSSMModelParameters(busAuxInputData, mission, heatingFuel, loading) as SSMInputs;
 			if (retVal == null) {
 				throw new VectoException("Unknonw SSMInput Instance");
 			}
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/BusAuxiliaries.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/BusAuxiliaries.cs
index d0c22da10c9289c9554775fe920876beba0616bf..41f77b25c0344bcd14b4605bd5d08d2c0a205f81 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/BusAuxiliaries.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/BusAuxiliaries.cs
@@ -12,6 +12,7 @@
 using System;
 using System.Collections.Generic;
 using TUGraz.VectoCommon.BusAuxiliaries;
+using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl;
 using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics;
@@ -21,6 +22,7 @@ using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces;
 using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules;
 using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.Electrics;
 using TUGraz.VectoCore.Models.BusAuxiliaries.Util;
+using TUGraz.VectoCore.OutputData;
 
 namespace TUGraz.VectoCore.Models.BusAuxiliaries
 {
@@ -66,9 +68,22 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries
 		//private IM14 M14;
 
 
-		public BusAuxiliaries()
+		public BusAuxiliaries(IModalDataContainer modDataContainer)
 		{
 			Signals = new Signals();
+			if (modDataContainer != null) {
+				modDataContainer.AuxHeaterDemandCalc = AuxHeaterDemandCalculation;
+			}
+		}
+
+		protected virtual Joule AuxHeaterDemandCalculation(Second cycleTime, Joule engineWasteHeatTotal)
+		{
+			if (auxConfig == null) {
+				throw new VectoException("Auxiliary configuration missing!");
+			}
+			var ssmTool = new SSMTOOL(auxConfig.SSMInputs);
+			var M14 = new M14aImpl(ssmTool);
+			return M14.AuxHeaterDemand(cycleTime, engineWasteHeatTotal);
 		}
 
 		public void Initialise(IAuxiliaryConfig auxCfg)
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs
index 0530682fafa7d21c6cce7f6fdd6683ff489fc174..d09a10d0e87b73e2aff3cf24bb28c5c44a91ff8f 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMCalculate.cs
@@ -143,10 +143,10 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 			}
 		}
 
-		public KilogramPerSecond FuelPerHBaseAdjusted
+		public Watt AverageAuxHeaterPower
 		{
 			get {
-				var FuelLPerHBaseAdjustedAverage = 0.0.SI<KilogramPerSecond>();
+				var averageAuxHeaterPower = 0.0.SI<Watt>();
 				var gen = ssmTOOL.SSMInputs.EnvironmentalConditions;
 				var tl = ssmTOOL.TechList;
 				
@@ -154,17 +154,17 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 				// If batch mode is disabled use the EC_EnviromentalTemperature and EC_Solar variables. 
 				// Else if batch is enable calculate the FuelLPerHBaseAdjusted for each input in the AENV file and then calculate the weighted average
 				if (!gen.BatchMode)
-					FuelLPerHBaseAdjustedAverage = CalculateFuelLPerHBaseAdjusted(
+					averageAuxHeaterPower = CalculateAverageAuxHeaterPower(
 						ssmTOOL.SSMInputs, tl, gen.DefaultConditions);
 				else {
 					foreach (var envCondition in gen.EnvironmentalConditionsMap.GetEnvironmentalConditions())
-						FuelLPerHBaseAdjustedAverage += CalculateFuelLPerHBaseAdjusted(
+						averageAuxHeaterPower += CalculateAverageAuxHeaterPower(
 							ssmTOOL.SSMInputs, tl, envCondition);
 
 					
 				}
 
-				return FuelLPerHBaseAdjustedAverage;
+				return averageAuxHeaterPower;
 			}
 		}
 
@@ -540,7 +540,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 			return MechanicalWBaseAdjusted * env.Weighting;
 		}
 
-		private KilogramPerSecond CalculateFuelLPerHBaseAdjusted(
+		private Watt CalculateAverageAuxHeaterPower(
 			ISSMInputs genInputs, ISSMTechnologyBenefits tecList, IEnvironmentalConditionsMapEntry env)
 		{
 			// =MIN(ABS(IF(AND(M89<0,M90<0),VLOOKUP(MAX(M89:M90),M89:P90,4),0)/1000),C71)/C37*(1/(C39*C38))
@@ -566,11 +566,11 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 							: Run2.TechListAmendedFuelW(env.Temperature, env.Solar)).Value().SI<Watt>();
 			}
 
-			var fuelLPerHBaseAdjusted = VectoMath.Min(result, genInputs.AuxHeater.FuelFiredHeaterPower) /
-										genInputs.BoundaryConditions.AuxHeaterEfficiency /
-										(genInputs.BoundaryConditions.GCVDieselOrHeatingOil /* * ssmTOOL.HVACConstants.FuelDensity*/);
+			var auxHeaterPower = VectoMath.Min(result, genInputs.AuxHeater.FuelFiredHeaterPower) /
+										genInputs.BoundaryConditions.AuxHeaterEfficiency;
+										// / (genInputs.BoundaryConditions.GCVDieselOrHeatingOil /* * ssmTOOL.HVACConstants.FuelDensity*/);
 
-			return fuelLPerHBaseAdjusted * env.Weighting;
+			return auxHeaterPower * env.Weighting;
 		}
 	}
 }
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMRun.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMRun.cs
index 0d50ccec5ede5b9978d4a51db60c0af37c57fb93..38e99e90d49a29f60cbf12a86cce260cb1787713 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMRun.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMRun.cs
@@ -76,8 +76,8 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 				// Dim C60  As Double = gen.AH_EngineWasteHeatkW
 
 				var totalW = TotalW(enviromentalTemperature, solarFactor);
-				return (totalW < 0 && totalW < (ssmTOOL.EngineWasteHeatkW * -1))
-					? totalW - (ssmTOOL.EngineWasteHeatkW * -1)
+				return (totalW < 0 && totalW < (ssmTOOL.EngineWasteHeat * -1))
+					? totalW - (ssmTOOL.EngineWasteHeat * -1)
 					: 0.SI<Watt>();
 
 		}
@@ -89,15 +89,15 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 				var TLFFH = ssmTOOL.Calculate.TechListAdjustedHeatingW_FuelFiredHeating;
 				// Dim C60 As Double = gen.AH_EngineWasteHeatkW
 				// Dim N79 As Double = Me.TotalKW
-				//Return IF(IF(((TotalKW * (1 - TLFFH)) < 0 AndAlso(TotalKW * (1 - TLFFH)) < (gen.AH_EngineWasteHeatkW * -1)), _
+				//Return IF(  IF(( (TotalKW * (1 - TLFFH)) < 0 AndAlso (TotalKW * (1 - TLFFH)) < (gen.AH_EngineWasteHeatkW * -1)), _
 				//	(TotalKW * (1 - TLFFH)) - (gen.AH_EngineWasteHeatkW * -1), 0)*1000 < 0, _
 				//IF(((TotalKW * (1 - TLFFH)) < 0 AndAlso(TotalKW * (1 - TLFFH)) < (gen.AH_EngineWasteHeatkW * -1)),(TotalKW * (1 - TLFFH)) - (gen.AH_EngineWasteHeatkW * -1),0)*1000,0)
 
-				var totalW = TotalW(enviromentalTemperature, solarFactor);
-				return (totalW * (1 - TLFFH) < 0 && totalW * (1 - TLFFH) < ssmTOOL.EngineWasteHeatkW * -1?
-							totalW * (1 - TLFFH) - ssmTOOL.EngineWasteHeatkW * -1: 0.SI<Watt>()) < 0
-					? (totalW * (1 - TLFFH) < 0 && totalW * (1 - TLFFH) < ssmTOOL.EngineWasteHeatkW * -1
-							? totalW * (1 - TLFFH) - ssmTOOL.EngineWasteHeatkW * -1
+				var totalW = TotalW(enviromentalTemperature, solarFactor) * (1 - TLFFH);
+				return (totalW  < 0 && totalW  < ssmTOOL.EngineWasteHeat * -1?
+							totalW  - ssmTOOL.EngineWasteHeat * -1: 0.SI<Watt>()) < 0
+					? (totalW  < 0 && totalW < ssmTOOL.EngineWasteHeat * -1
+							? totalW  - ssmTOOL.EngineWasteHeat * -1
 							: 0.SI<Watt>())
 					: 0.SI<Watt>();
 			
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs
index b5cf655fef30cce708883eeebec182b11a8b17ff..8070353c3b41a798296a4e09e3db56041f7d1749 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMTOOL.cs
@@ -23,7 +23,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 			TechList = ssmInput.Technologies;
 
 			Calculate = new SSMCalculate(this);
-			EngineWasteHeatkW = 0.SI<Watt>();
+			EngineWasteHeat = 0.SI<Watt>();
 		}
 
 		public ISSMInputs SSMInputs { get;  }
@@ -82,25 +82,25 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 			}
 		}
 
-		public KilogramPerSecond FuelPerHBaseAdjusted
-		{
-			get {
-				return Calculate.FuelPerHBaseAdjusted; // .SI(Of LiterPerHour)()
-			}
-		}
+		//public KilogramPerSecond FuelPerHBaseAdjusted
+		//{
+		//	get {
+		//		return Calculate.AverageAuxHeaterPower; // .SI(Of LiterPerHour)()
+		//	}
+		//}
 
-		public Watt EngineWasteHeatkW { get; protected set; }
+		public Watt EngineWasteHeat { get; protected set; }
 		
 		
 		
 		// Dynamicly Get Fuel having re-adjusted Engine Heat Waste, this was originally supposed to be Solid State. Late adjustment request 24/3/2015
-		public KilogramPerSecond FuelPerHBaseAsjusted(Watt AverageUseableEngineWasteHeatKW)
+		public Watt AverageAuxHeaterPower(Watt averageUseableEngineWasteHeat)
 		{
 			// Set Engine Waste Heat
 			//SSMInputs.AuxHeater.EngineWasteHeatkW = AverageUseableEngineWasteHeatKW;
-			EngineWasteHeatkW = AverageUseableEngineWasteHeatKW;
+			EngineWasteHeat = averageUseableEngineWasteHeat;
 
-			var fba = Calculate.FuelPerHBaseAdjusted;
+			var fba = Calculate.AverageAuxHeaterPower;
 
 			// Dim FuelFiredWarning As Boolean = fba * SSMInputs.BC_AuxHeaterEfficiency * HVACConstants.FuelDensity * SSMInputs.BC_GCVDieselOrHeatingOil * 1000 > (AverageUseableEngineWasteHeatKW + SSMInputs.AH_FuelFiredHeaterkW)
 			// If Not FuelFiredHeaterInsufficientWarned AndAlso FuelFiredWarning Then
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M14Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M14Impl.cs
index 143dab91254cf24022e1fbcf3add5b667d36e33a..05e453bbc97be656df80a84a26a4f48ea3e58d2d 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M14Impl.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/M14Impl.cs
@@ -1,57 +1,79 @@
 using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC;
+using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces;
 using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules;
 using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.HVAC;
 using TUGraz.VectoCore.Models.Declaration;
 
 namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl
 {
-	public class M14Impl : AbstractModule, IM14
-	{
-		protected readonly IM13 M13;
-		protected readonly ISignals Signals;
-		protected readonly ISSMTOOL SSM;
+	//public class M14Impl : AbstractModule, IM14
+	//{
+	//	protected readonly IM13 M13;
+	//	protected readonly ISignals Signals;
+	//	protected readonly ISSMTOOL SSM;
 
-		protected Kilogram _totalCycleFcGrams;
-		private readonly IFuelProperties EngineFuel;
+	//	protected Kilogram _totalCycleFcGrams;
+	//	private readonly IFuelProperties EngineFuel;
 
 
-		public M14Impl(IM13 m13, ISSMTOOL ssm, IFuelProperties engineFuel, ISignals signals)
-		{
-			M13 = m13;
-			SSM = ssm;
-			EngineFuel = engineFuel;
-			Signals = signals;
-		}
+	//	public M14Impl(IM13 m13, ISSMTOOL ssm, IFuelProperties engineFuel, ISignals signals)
+	//	{
+	//		M13 = m13;
+	//		SSM = ssm;
+	//		EngineFuel = engineFuel;
+	//		Signals = signals;
+	//	}
 
 
-		protected override void DoCalculate()
-		{
-			var s1 = M13.WHTCTotalCycleFuelConsumption * EngineFuel.LowerHeatingValueVectoEngine;
-			var s2 = SSM.SSMInputs.AuxHeater.FuelEnergyToHeatToCoolant * s1;
-			var s3 = s2 * SSM.SSMInputs.AuxHeater.CoolantHeatTransferredToAirCabinHeater;
-			var s4 = s3 / Signals.CurrentCycleTimeInSeconds.SI<Second>();
-			var s5 = Signals.CurrentCycleTimeInSeconds.SI<Second>(); 
-			var s6 = s5 * SSM.FuelPerHBaseAsjusted(s4); 
-			var s7 = M13.WHTCTotalCycleFuelConsumption + s6;
-			_totalCycleFcGrams = s7;
-		}
+	//	protected override void DoCalculate()
+	//	{
+	//		var s1 = M13.WHTCTotalCycleFuelConsumption * EngineFuel.LowerHeatingValueVectoEngine;
+	//		var s2 = SSM.SSMInputs.AuxHeater.FuelEnergyToHeatToCoolant * s1;
+	//		var s3 = s2 * SSM.SSMInputs.AuxHeater.CoolantHeatTransferredToAirCabinHeater;
+	//		var s4 = s3 / Signals.CurrentCycleTimeInSeconds.SI<Second>();
+	//		var s5 = Signals.CurrentCycleTimeInSeconds.SI<Second>(); 
+	//		var s6 = s5 * SSM.FuelPerHBaseAsjusted(s4); 
+	//		var s7 = M13.WHTCTotalCycleFuelConsumption + s6;
+	//		_totalCycleFcGrams = s7;
+	//	}
 
 
-		#region Implementation of IM14
+	//	#region Implementation of IM14
 
-		public Kilogram TotalCycleFC
-		{
-			get {
-				if (!calculationValid) {
-					Calculate();
-				}
-				return _totalCycleFcGrams;
-			}
-		}
+	//	public Kilogram TotalCycleFC
+	//	{
+	//		get {
+	//			if (!calculationValid) {
+	//				Calculate();
+	//			}
+	//			return _totalCycleFcGrams;
+	//		}
+	//	}
 
 		
 
-		#endregion
+	//	#endregion
+	//}
+
+	public class M14aImpl
+	{
+		//private Signals _signals;
+		private SSMTOOL _ssmTool;
+
+		public M14aImpl(SSMTOOL ssmTool)
+		{
+			_ssmTool = ssmTool;
+		}
+
+		public Joule AuxHeaterDemand(Second cycleTime, Joule engineWasteHeat)
+		{
+			var averageEngineWasteHeatPwr = engineWasteHeat / cycleTime;
+			var averageUsableEngineWasteHeat = averageEngineWasteHeatPwr *
+												_ssmTool.SSMInputs.AuxHeater.FuelEnergyToHeatToCoolant *
+												_ssmTool.SSMInputs.AuxHeater.CoolantHeatTransferredToAirCabinHeater;
+			return _ssmTool.AverageAuxHeaterPower(averageUsableEngineWasteHeat) * cycleTime;
+		}
 	}
 }
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/CompressorMap.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/CompressorMap.cs
index 9a202b691c794a767bed9ca77f494763d1c0689a..388a49c61fff46a0238ce9267c1a383b252be3e1 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/CompressorMap.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/CompressorMap.cs
@@ -98,17 +98,17 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumati
 		
 
 
-		public event MessageEventHandler Message;
+		//public event MessageEventHandler Message;
 
 		//public delegate void MessageEventHandler(ref object sender, string message, AdvancedAuxiliaryMessageType messageType);
 
-		private void OnMessage(object sender, string message, AdvancedAuxiliaryMessageType messageType)
-		{
-			if (message != null) {
-				object compressorMap = this;
-				Message?.Invoke(ref compressorMap, message, messageType);
-			}
-		}
+		//private void OnMessage(object sender, string message, AdvancedAuxiliaryMessageType messageType)
+		//{
+		//	if (message != null) {
+		//		object compressorMap = this;
+		//		Message?.Invoke(ref compressorMap, message, messageType);
+		//	}
+		//}
 
 		#region Implementation of IAuxiliaryEvent
 
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMCalculate.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMCalculate.cs
index 5cbe37bd4d637af2d212f8d2d124e94c7cd79421..0b39102998ee2c4446e8bb51113f000b68283b04 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMCalculate.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMCalculate.cs
@@ -11,7 +11,8 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.HV
 
 		Watt ElectricalWAdjusted { get; }
 		Watt MechanicalWBaseAdjusted { get; }
-		KilogramPerSecond FuelPerHBaseAdjusted { get; }
+
+		Watt AverageAuxHeaterPower { get; }
 
 
 		double TechListAdjustedHeatingW_FuelFiredHeating { get; }
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMTOOL.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMTOOL.cs
index ad18a9fc981de27c87c7baed0247e7a2fc2af5be..6f32348f04fe1eca2e827c477c8e365109830155 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMTOOL.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/HVAC/ISSMTOOL.cs
@@ -15,20 +15,21 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.HV
 
 		Watt ElectricalWAdjusted { get; } // Watt
 		Watt MechanicalWBaseAdjusted { get; } // Watt
-		KilogramPerSecond FuelPerHBaseAdjusted { get; } // LiterPerHour
 
-		Watt EngineWasteHeatkW { get; }
+		//KilogramPerSecond FuelPerHBaseAdjusted { get; } // LiterPerHour
+
+		Watt EngineWasteHeat { get; }
 
 
 		/// <summary>
-		/// This alters the waste heat and returns an adjusted fueling value
+		/// 
 		/// </summary>
-		/// <param name="AverageUseableEngineWasteHeatKW"></param>
+		/// <param name="averageUseableEngineWasteHeat"></param>
 		/// <returns></returns>
 		/// <remarks></remarks>
-		KilogramPerSecond FuelPerHBaseAsjusted(Watt AverageUseableEngineWasteHeatKW);
+		Watt AverageAuxHeaterPower(Watt averageUseableEngineWasteHeat);
 
 	}
 
-	public delegate void MessageEventHandler(ref object sender, string message, AdvancedAuxiliaryMessageType messageType);
+	//public delegate void MessageEventHandler(ref object sender, string message, AdvancedAuxiliaryMessageType messageType);
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Declaration/MissionType.cs b/VectoCore/VectoCore/Models/Declaration/MissionType.cs
index 37332bbcf717f6e2b7717b9665eff48dc5425c2f..1daca366e69b777d70e2d103ae7d6cb8a28cb32f 100644
--- a/VectoCore/VectoCore/Models/Declaration/MissionType.cs
+++ b/VectoCore/VectoCore/Models/Declaration/MissionType.cs
@@ -128,5 +128,17 @@ namespace TUGraz.VectoCore.Models.Declaration
 				default: throw new ArgumentOutOfRangeException(nameof(self), self, null);
 			}
 		}
+
+		public static double GetPassengerDensityLowLoadFactor(this MissionType self)
+		{
+			switch (self) {
+				case MissionType.HeavyUrban:
+				case MissionType.Urban:
+				case MissionType.Suburban: return 0.2;
+				case MissionType.Interurban: return 0.3;
+				case MissionType.Coach: return 0.4;
+				default: return 0.1;
+			}
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs
index ba2d3d53929aee22cb5cc9681a1aed2f03768f85..2422f8bb889dd5553c8c97f4c6bd6c1f0bf83c03 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs
@@ -70,7 +70,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 			DataBus = container;
 
-			var tmpAux = new BusAuxiliaries.BusAuxiliaries();
+			var tmpAux = new BusAuxiliaries.BusAuxiliaries(container.ModalData);
 
 			//'Set Signals
 			tmpAux.Signals.EngineIdleSpeed = container.EngineIdleSpeed;
diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
index d996f355b4ff6d8cbfc5af774ad0e15271b5923c..2ef6cc25beda86e4a363a09b5261b64afae7d7ff 100644
--- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
@@ -114,6 +114,9 @@ namespace TUGraz.VectoCore.OutputData
 		Second Duration { get; }
 
 		Meter Distance { get; }
+
+		Func<Second, Joule, Joule> AuxHeaterDemandCalc { get; set; }
+
 		KilogramPerWattSecond VehicleLineCorrectionFactor(IFuelProperties fuel);
 		void CalculateAggregateValues();
 	}
diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
index 3a4406f4ce7a67e64a9776d384bef8218424ade6..49b67df69f16d253fcf2e14a086ab7eacdf305ce 100644
--- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
@@ -164,6 +164,8 @@ namespace TUGraz.VectoCore.OutputData
 			get { return _distance ?? (_distance = CalcDistance()); }
 		}
 
+		public Func<Second, Joule, Joule> AuxHeaterDemandCalc { get; set; }
+
 		public KilogramPerWattSecond VehicleLineCorrectionFactor(IFuelProperties fuel)
 		{
 			if (_vehicleLine.ContainsKey(fuel.FuelType)) {
@@ -328,8 +330,9 @@ namespace TUGraz.VectoCore.OutputData
 						ModalResultField.v_act,
 						ModalResultField.v_targ,
 						ModalResultField.acc,
-						ModalResultField.grad
-					});
+						ModalResultField.grad,
+						ModalResultField.altitude
+			});
 			}
 			if (!_writeEngineOnly) {
 				dataColumns.AddRange(
@@ -428,31 +431,9 @@ namespace TUGraz.VectoCore.OutputData
 						});
 				}
 			}
-			if (!_writeEngineOnly && WriteAdvancedAux) {
-				//dataColumns.AddRange(
-				//	new[] {
-				//		ModalResultField.AA_NonSmartAlternatorsEfficiency,
-				//		ModalResultField.AA_SmartIdleCurrent_Amps,
-				//		ModalResultField.AA_SmartIdleAlternatorsEfficiency,
-				//		ModalResultField.AA_SmartTractionCurrent_Amps,
-				//		ModalResultField.AA_SmartTractionAlternatorEfficiency,
-				//		ModalResultField.AA_SmartOverrunCurrent_Amps,
-				//		ModalResultField.AA_SmartOverrunAlternatorEfficiency,
-				//		ModalResultField.AA_CompressorFlowRate_LitrePerSec,
-				//		ModalResultField.BusAux_OverrunFlag,
-				//		ModalResultField.AA_EngineIdleFlag,
-				//		ModalResultField.AA_CompressorFlag,
-				//		ModalResultField.AA_TotalCycleFC_Grams,
-				//		//ModalResultField.AA_TotalCycleFC_Litres,
-				//		ModalResultField.AA_AveragePowerDemandCrankHVACMechanicals,
-				//		ModalResultField.AA_AveragePowerDemandCrankHVACElectricals,
-				//		ModalResultField.AA_AveragePowerDemandCrankElectrics,
-				//		ModalResultField.AA_AveragePowerDemandCrankPneumatics,
-				//		ModalResultField.AA_TotalCycleFuelConsumptionCompressorOff,
-				//		ModalResultField.AA_TotalCycleFuelConsumptionCompressorOn,
-				//	});
-			}
-			dataColumns.Add(ModalResultField.altitude);
+			//if (!_writeEngineOnly && WriteAdvancedAux) {
+				
+			//}
 			return dataColumns;
 		}
 
diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
index d239523064d28b6de9339f5d0d05b102ad8276a9..6285f098aa1af3262da918968a9ad5efa74f431d 100644
--- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
@@ -63,8 +63,10 @@ namespace TUGraz.VectoCore.OutputData
 			Fields.FC_BusAux_PS_CORR_H, Fields.FC_BusAux_PS_CORR_KM,
 			Fields.FC_BusAux_ES_CORR_H, Fields.FC_BusAux_ES_CORR_KM,
 			Fields.FCWHR_H_CORR, Fields.FCWHR_KM_CORR,
+			Fields.FC_AUXHTR_H, Fields.FC_AUXHTR_KM,
+			Fields.FC_AUXHTR_H_CORR, Fields.FC_AUXHTR_KM_CORR,
 			Fields.FCFINAL_H, Fields.FCFINAL_KM, Fields.FCFINAL_LITERPER100KM, Fields.FCFINAL_LITERPER100TKM,
-			Fields.FCFINAL_LiterPer100M3KM, Fields.K_VEHLINE
+			Fields.FCFINAL_LiterPer100M3KM, Fields.FCFINAL_LiterPer100PassengerKM, Fields.K_VEHLINE
 		};
 
 		// ReSharper restore InconsistentNaming
@@ -100,6 +102,7 @@ namespace TUGraz.VectoCore.OutputData
 					Tuple.Create(Fields.HDV_CO2_VEHICLE_CLASS, typeof(string)),
 					Tuple.Create(Fields.CURB_MASS, typeof(ConvertedSI)),
 					Tuple.Create(Fields.LOADING, typeof(ConvertedSI)),
+					Tuple.Create(Fields.PassengerCount, typeof(double)),
 					Tuple.Create(Fields.TOTAL_VEHICLE_MASS, typeof(ConvertedSI)),
 					Tuple.Create(Fields.ENGINE_MANUFACTURER, typeof(string)),
 					Tuple.Create(Fields.ENGINE_MODEL, typeof(string)),
@@ -171,13 +174,13 @@ namespace TUGraz.VectoCore.OutputData
 			
 			Table.Columns.AddRange(
 				new[] {
-					Fields.SPECIFIC_FC, Fields.CO2_KM, Fields.CO2_TKM, Fields.CO2_M3KM, Fields.P_WHEEL_POS, Fields.P_FCMAP_POS,
+					Fields.SPECIFIC_FC, Fields.CO2_KM, Fields.CO2_TKM, Fields.CO2_M3KM, Fields.CO2_PKM, Fields.P_WHEEL_POS, Fields.P_FCMAP_POS,
 					Fields.E_FCMAP_POS, Fields.E_FCMAP_NEG, Fields.E_POWERTRAIN_INERTIA, Fields.E_AUX, Fields.E_CLUTCH_LOSS,
 					Fields.E_TC_LOSS, Fields.E_SHIFT_LOSS, Fields.E_GBX_LOSS, Fields.E_RET_LOSS, Fields.E_ANGLE_LOSS,
 					Fields.E_AXL_LOSS, Fields.E_BRAKE, Fields.E_VEHICLE_INERTIA, Fields.E_WHEEL, Fields.E_AIR, Fields.E_ROLL, Fields.E_GRAD,
 					Fields.AirConsumed, Fields.AirGenerated, Fields.E_PS_CompressorOff, Fields.E_PS_CompressorOn,
 					Fields.E_BusAux_ES_consumed, Fields.E_BusAux_ES_generated, Fields.Delta_E_BusAux_Battery,
-					Fields.E_BusAux_PS_corr, Fields.E_BusAux_ES_mech_corr,
+					Fields.E_BusAux_PS_corr, Fields.E_BusAux_ES_mech_corr, Fields.E_BusAux_AuxHeater,
 					Fields.E_WHR_EL, Fields.E_WHR_MECH, Fields.E_AUX_ESS_MECH, Fields.E_ICE_START, Fields.NUM_ICE_STARTS, Fields.ACC,
 					Fields.ACC_POS, Fields.ACC_NEG, Fields.ACC_TIMESHARE, Fields.DEC_TIMESHARE, Fields.CRUISE_TIMESHARE,
 					Fields.MAX_SPEED, Fields.MAX_ACCELERATION, Fields.MAX_DECELERATION, Fields.AVG_ENGINE_SPEED,
@@ -277,12 +280,14 @@ namespace TUGraz.VectoCore.OutputData
 			var vehicleLoading = 0.SI<Kilogram>();
 			var cargoVolume = 0.SI<CubicMeter>();
 			var gearCount = 0u;
+			double? passengerCount = null;
 			if (runData.Cycle.CycleType != CycleType.EngineOnly) {
 				WriteFullPowertrain(runData, row);
 
 				cargoVolume = runData.VehicleData.CargoVolume;
 				vehicleLoading = runData.VehicleData.Loading;
 				gearCount = (uint)runData.GearboxData.Gears.Count;
+				passengerCount = runData.BusAuxiliaries?.SSMInputs.NumberOfPassengers;
 			}
 
 			row[Fields.VEHICLE_FUEL_TYPE] = string.Join(", ", modData.FuelData.Select(x => x.GetLabel()));
@@ -302,7 +307,7 @@ namespace TUGraz.VectoCore.OutputData
 
 			row[Fields.ALTITUDE_DELTA] = (ConvertedSI)modData.AltitudeDelta();
 
-			WriteFuelconsumptionEntries(modData, row, vehicleLoading, cargoVolume, runData);
+			WriteFuelconsumptionEntries(modData, row, vehicleLoading, cargoVolume, passengerCount, runData);
 
 			row[Fields.P_WHEEL_POS] = modData.PowerWheelPositive().ConvertToKiloWatt();
 
@@ -332,7 +337,7 @@ namespace TUGraz.VectoCore.OutputData
 
 		private static void WriteFuelconsumptionEntries(
 			IModalDataContainer modData, DataRow row, Kilogram vehicleLoading, 
-			CubicMeter cargoVolume, VectoRunData runData)
+			CubicMeter cargoVolume, double? passengers, VectoRunData runData)
 		{
 			var multipleEngineModes = runData.EngineData.MultipleEngineFuelModes;
 			var vtpCycle = runData.Cycle.CycleType == CycleType.VTP;
@@ -381,6 +386,16 @@ namespace TUGraz.VectoCore.OutputData
 
 			// TODO: Correct for fuel-fired heater
 
+			var engineWasteheatSum = modData.FuelData.Aggregate(
+				0.SI<Joule>(),
+				(current, fuel) => current + modData.TotalFuelConsumption(ModalResultField.FCFinal, fuel) *
+									fuel.LowerHeatingValueVecto);
+
+			var auxHeaterDemand = modData.AuxHeaterDemandCalc(duration, engineWasteheatSum);
+
+			row[Fields.E_BusAux_AuxHeater] = auxHeaterDemand.Cast<WattSecond>().ConvertToKiloWattHour();
+
+			var firstFuel = true;
 			foreach (var fuel in modData.FuelData) {
 				var suffix = modData.FuelData.Count <= 1 && !multipleEngineModes ? "" : "_" + fuel.FuelType.GetLabel();
 
@@ -400,11 +415,6 @@ namespace TUGraz.VectoCore.OutputData
 				row[FcCol(Fields.FCWHTCC_KM, suffix)] =
 					modData.FuelConsumptionPerMeter(ModalResultField.FCWHTCc, fuel)?.ConvertToGrammPerKiloMeter();
 
-				//row[FcCol(Fields.FCAAUX_H, suffix)] =
-				//	modData.FuelConsumptionPerSecond(ModalResultField.FCAAUX, fuel)?.ConvertToGrammPerHour();
-				//row[FcCol(Fields.FCAAUX_KM, suffix)] =
-				//	modData.FuelConsumptionPerMeter(ModalResultField.FCAAUX, fuel)?.ConvertToGrammPerKiloMeter();
-
 				row[FcCol(Fields.FCESS_H, suffix)] = modData.FuelConsumptionPerSecond(ModalResultField.FCICEStopStart, fuel)
 													?.ConvertToGrammPerHour();
 				row[FcCol(Fields.FCESS_KM, suffix)] = modData.FuelConsumptionPerMeter(ModalResultField.FCICEStopStart, fuel)
@@ -430,7 +440,17 @@ namespace TUGraz.VectoCore.OutputData
 				var fcWHRCorr = fcBusAuxESCorr + correction * workWhr;
 				row[FcCol(Fields.FCWHR_H_CORR, suffix)] = duration != null ? (fcWHRCorr / duration).ConvertToGrammPerHour() : null;
 
-				var fcFinal = fcWHRCorr;
+				var fcAuxHtr = 0.SI<Kilogram>();
+				if (firstFuel) {
+					firstFuel = false;
+					fcAuxHtr = auxHeaterDemand / fuel.LowerHeatingValueVecto;
+				}
+				var fcAuxHtrCorr = fcWHRCorr + fcAuxHtr;
+
+				var fcFinal = fcAuxHtrCorr;
+
+				row[FcCol(Fields.FC_AUXHTR_H, suffix)] = (fcAuxHtr / duration).ConvertToGrammPerHour();
+				row[FcCol(Fields.FC_AUXHTR_H_CORR, suffix)] = (fcAuxHtrCorr / duration).ConvertToGrammPerHour();
 
 				row[FcCol(Fields.FCFINAL_H, suffix)] = (fcFinal / duration).ConvertToGrammPerHour();
 
@@ -438,6 +458,9 @@ namespace TUGraz.VectoCore.OutputData
 					row[FcCol(Fields.FCWHR_KM_CORR, suffix)] = (fcWHRCorr / distance).ConvertToGrammPerKiloMeter();
 					row[FcCol(Fields.FC_BusAux_PS_CORR_KM, suffix)] = (fcBusAuxPSCorr / distance).ConvertToGrammPerKiloMeter();
 					row[FcCol(Fields.FC_BusAux_ES_CORR_KM, suffix)] = (fcBusAuxESCorr / distance).ConvertToGrammPerKiloMeter();
+					row[FcCol(Fields.FC_AUXHTR_KM, suffix)] = (fcAuxHtr / distance).ConvertToGrammPerKiloMeter();
+					row[FcCol(Fields.FC_AUXHTR_KM_CORR, suffix)] = (fcAuxHtrCorr / distance).ConvertToGrammPerKiloMeter();
+
 					row[FcCol(Fields.FCESS_KM_CORR, suffix)] = (fcEssCorr / distance).ConvertToGrammPerKiloMeter();
 					row[FcCol(Fields.FCFINAL_KM, suffix)] = (fcFinal / distance).ConvertToGrammPerKiloMeter();
 
@@ -453,12 +476,17 @@ namespace TUGraz.VectoCore.OutputData
 							row[FcCol(Fields.FCFINAL_LiterPer100M3KM, suffix)] =
 								(fcVolumePerMeter / cargoVolume).ConvertToLiterPerCubicMeter100KiloMeter();
 						}
+
+						if (passengers != null) {
+							// subtract driver!
+							row[FcCol(Fields.FCFINAL_LiterPer100PassengerKM, suffix)] =
+								(fcVolumePerMeter / (passengers.Value - 1)).ConvertToLiterPer100Kilometer();
+						}
 					}
 
 					kilogramCO2PerMeter += fcFinal * fuel.CO2PerFuelWeight / distance;
 				}
 
-				
 			}
 
 			if (vtpCycle) {
@@ -473,6 +501,9 @@ namespace TUGraz.VectoCore.OutputData
 			if (cargoVolume > 0) {
 				row[Fields.CO2_M3KM] = (kilogramCO2PerMeter / cargoVolume).ConvertToGrammPerCubicMeterKiloMeter();
 			}
+			if (passengers != null) {
+				row[Fields.CO2_PKM] = (kilogramCO2PerMeter / passengers.Value).ConvertToGrammPerKiloMeter();
+			}
 		}
 
 		private static string FcCol(string col, string suffix)
@@ -641,6 +672,11 @@ namespace TUGraz.VectoCore.OutputData
 		{
 			WriteVehicleData(runData.VehicleData, runData.GearboxData.Type, row);
 
+			if (runData.BusAuxiliaries != null) {
+				// subtract driver!
+				row[Fields.PassengerCount] = runData.BusAuxiliaries.SSMInputs.NumberOfPassengers - 1;
+			}
+
 			row[Fields.TCU_MODEL] = runData.ShiftStrategy;
 			row[Fields.PTO_TECHNOLOGY] = runData.PTO?.TransmissionType ?? "";
 
@@ -872,6 +908,7 @@ namespace TUGraz.VectoCore.OutputData
 
 		public static class Fields
 		{
+
 			// ReSharper disable InconsistentNaming
 
 			public const string INTERNAL_PREFIX = "INTERNAL";
@@ -883,6 +920,7 @@ namespace TUGraz.VectoCore.OutputData
 			public const string STATUS = "Status";
 			public const string CURB_MASS = "Corrected Actual Curb Mass [kg]";
 			public const string LOADING = "Loading [kg]";
+			public const string PassengerCount = "Passenger count [-]";
 
 			public const string VEHICLE_MANUFACTURER = "Vehicle manufacturer [-]";
 			public const string VIN_NUMBER = "VIN number";
@@ -963,6 +1001,10 @@ namespace TUGraz.VectoCore.OutputData
 			public const string FC_BusAux_PS_CORR_KM = "FC-BusAux_PS_Corr{0} [g/km]";
 			public const string FC_BusAux_ES_CORR_H = "FC-BusAux_ES_Corr{0} [g/h]";
 			public const string FC_BusAux_ES_CORR_KM = "FC-BusAux_ES_Corr{0} [g/km]";
+			public const string FC_AUXHTR_H = "FC-BusAux_AuxHeater{0} [g/h]";
+			public const string FC_AUXHTR_KM = "FC-BusAux_AuxHeater{0} [k/km]";
+			public const string FC_AUXHTR_H_CORR = "FC-BusAux_AuxHeater_Corr{0} [g/h]";
+			public const string FC_AUXHTR_KM_CORR = "FC-BusAux_AuxHeater_Corr{0} [g/km]";
 
 
 			public const string FCFINAL_H = "FC-Final{0} [g/h]";
@@ -970,10 +1012,12 @@ namespace TUGraz.VectoCore.OutputData
 			public const string FCFINAL_LITERPER100KM = "FC-Final{0} [l/100km]";
 			public const string FCFINAL_LITERPER100TKM = "FC-Final{0} [l/100tkm]";
 			public const string FCFINAL_LiterPer100M3KM = "FC-Final{0} [l/100m³km]";
+			public const string FCFINAL_LiterPer100PassengerKM = "FC-Final{0} [l/100Pkm]";
 
 			public const string CO2_KM = "CO2 [g/km]";
 			public const string CO2_TKM = "CO2 [g/tkm]";
 			public const string CO2_M3KM = "CO2 [g/m³km]";
+			public const string CO2_PKM = "CO2 [g/Pkm]";
 
 			public const string P_WHEEL_POS = "P_wheel_in_pos [kW]";
 			public const string P_FCMAP_POS = "P_fcmap_pos [kW]";
@@ -992,6 +1036,7 @@ namespace TUGraz.VectoCore.OutputData
 
 			public const string E_BusAux_PS_corr = "E_BusAux_PS_corr [kWh]";
 			public const string E_BusAux_ES_mech_corr = "E_BusAux_ES_mech_corr [kWh]";
+			public const string E_BusAux_AuxHeater = "E_BusAux_AuxhHeater [kWh]";
 
 			public const string E_AIR = "E_air [kWh]";
 			public const string E_ROLL = "E_roll [kWh]";
diff --git a/VectoCore/VectoCoreTest/Models/Declaration/BusFactoryTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/BusFactoryTest.cs
index 81cad974751af28dd76b5579976a973d4ca0241a..1681fdec841d430459573df6083cdd042cd5fd3d 100644
--- a/VectoCore/VectoCoreTest/Models/Declaration/BusFactoryTest.cs
+++ b/VectoCore/VectoCoreTest/Models/Declaration/BusFactoryTest.cs
@@ -29,7 +29,11 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 
 		[
 			TestCase(@"TestData\Integration\Buses\vecto_vehicle-primary_heavyBus_nonSmart.xml", 0, TestName = "Run Primary Bus NonSmart HeavyUrban Low"),
+			TestCase(@"TestData\Integration\Buses\vecto_vehicle-primary_heavyBus_SmartPS.xml", -1, TestName = "Run Primary Bus SmartPS ALL"),
 
+			TestCase(@"TestData\Integration\Buses\vecto_vehicle-primary_heavyBus_SmartPS.xml", 0, TestName = "Run Primary Bus SmartPS HeavyUrban Low"),
+			TestCase(@"TestData\Integration\Buses\vecto_vehicle-primary_heavyBus_SmartPS.xml", 1, TestName = "Run Primary Bus SmartPS HeavyUrban Ref"),
+			TestCase(@"TestData\Integration\Buses\vecto_vehicle-primary_heavyBus_SmartPS.xml", 13, TestName = "Run Primary Bus SmartPS InterUrban Ref"),
 
 			TestCase(@"TestData\Integration\Buses\vecto_vehicle-primary_heavyBus_nonSmart.xml", -1, TestName = "Run Primary Bus NonSmart ALL"),
 			TestCase(@"TestData\Integration\Buses\vecto_vehicle-primary_heavyBus_SmartPS.xml", -1, TestName = "Run Primary Bus SmartPS ALL"),
diff --git a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
index c3f41332e6e610f29dd6e0ebb425d5badeca3de4..30907527c2083b3b87410f18c02e7d3b2cf41fd7 100644
--- a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
@@ -234,6 +234,8 @@ namespace TUGraz.VectoCore.Tests.Utils
 			get { return _distance; }
 		}
 
+		public Func<Second, Joule, Joule> AuxHeaterDemandCalc { get; set; }
+
 		public KilogramPerWattSecond VehicleLineCorrectionFactor(IFuelProperties fuel)
 		{
 			return 0.SI<KilogramPerWattSecond>();