diff --git a/applications/solvers/combustion/rhoReactingFoam/pEqn.H b/applications/solvers/combustion/rhoReactingFoam/pEqn.H
index f11c9792245d8275afd46682ccd77207e5491ea1..ee03ece751859dfdc4854bba69bca2ce6e15e2d2 100644
--- a/applications/solvers/combustion/rhoReactingFoam/pEqn.H
+++ b/applications/solvers/combustion/rhoReactingFoam/pEqn.H
@@ -24,12 +24,17 @@
             fvc::interpolate(thermo.psi())*phiv
         );
 
+        fvScalarMatrix pDDtEqn
+        (
+            fvc::ddt(rho) + fvc::div(phi)
+          + correction(fvm::ddt(psi, p) + fvm::div(phid, p))
+        );
+
         for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
         {
             fvScalarMatrix pEqn
             (
-                fvc::ddt(rho) + fvc::div(phi)
-              + correction(fvm::ddt(psi, p) + fvm::div(phid, p))
+                pDDtEqn
               - fvm::laplacian(rho*rAU, p)
             );
 
@@ -63,12 +68,17 @@
               + fvc::ddtPhiCorr(rAU, rho, U, phi)
             );
 
+        fvScalarMatrix pDDtEqn
+        (
+            fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+          + fvc::div(phi)
+        );
+
         for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
         {
             fvScalarMatrix pEqn
             (
-                fvc::ddt(rho) + psi*correction(fvm::ddt(p))
-              + fvc::div(phi)
+                pDDtEqn
               - fvm::laplacian(rho*rAU, p)
             );
 
diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H
index 768876c316ba6dffe7e55751b69413353bb8d088..c6d1ad5e3c80087b5757b4333f71e74d752cd0ff 100644
--- a/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H
+++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H
@@ -19,12 +19,17 @@
     surfaceScalarField buoyancyPhi(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());
     phi += buoyancyPhi;
 
+    fvScalarMatrix p_rghDDtEqn
+    (
+        fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
+      + fvc::div(phi)
+    );
+
     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
         fvScalarMatrix p_rghEqn
         (
-            fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
-          + fvc::div(phi)
+            p_rghDDtEqn
           - fvm::laplacian(rhorAUf, p_rgh)
         );
 
diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H
index fccb98c8cb79855b4fad2089ed98111b2c40158c..9fb91f1d36fd3f429f7ead10cbff5c81714f1c3b 100644
--- a/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H
+++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H
@@ -23,7 +23,7 @@
             );
     }
 
-    fvScalarMatrix DrhoDtEqn
+    fvScalarMatrix pDDtEqn
     (
         fvc::ddt(rho) + psi*correction(fvm::ddt(p))
       + fvc::div(phi)
@@ -36,7 +36,7 @@
     {
         fvScalarMatrix pEqn
         (
-            DrhoDtEqn
+            pDDtEqn
           - fvm::laplacian(rho*rAU, p)
         );
 
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H
index 4a28b0dd9427fd96151896593ac2480aa2ff2f84..e173fa858b30541e765c408f8512a9682fa6d05f 100644
--- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H
@@ -23,16 +23,21 @@
             );
     }
 
+    fvScalarMatrix pDDtEqn
+    (
+        fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+      + fvc::div(phi)
+     ==
+        parcels.Srho()
+      + massSource.SuTot()
+    );
+
     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
         fvScalarMatrix pEqn
         (
-            fvc::ddt(rho) + psi*correction(fvm::ddt(p))
-          + fvc::div(phi)
+            pDDtEqn
           - fvm::laplacian(rho*rAU, p)
-        ==
-            parcels.Srho()
-          + massSource.SuTot()
         );
 
         if (corr == nCorr-1 && nonOrth == nNonOrthCorr)
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
index 3e49d29cd508c4a6a59b6bce2a3b76acedfeeccd..26cae658c62bf2e3cfe0ac93401ba94ac13ad352 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
@@ -218,10 +218,10 @@ void Foam::KinematicCloud<CloudType>::evolveCloud(TrackData& td)
     {
 //        this->surfaceFilm().injectSteadyState(td);
 
-        this->injection().injectSteadyState(td, solution_.deltaT());
+        this->injection().injectSteadyState(td, solution_.deltaTValue());
 
         td.part() = TrackData::tpLinearTrack;
-        CloudType::move(td,  solution_.deltaT());
+        CloudType::move(td,  solution_.deltaTValue());
     }
 }
 
@@ -353,7 +353,7 @@ Foam::KinematicCloud<CloudType>::KinematicCloud
                 IOobject::AUTO_WRITE
             ),
             mesh_,
-            dimensionedScalar("zero",  dimMass/dimTime, 0.0)
+            dimensionedScalar("zero",  dimMass, 0.0)
         )
     )
 {
@@ -504,7 +504,7 @@ void Foam::KinematicCloud<CloudType>::checkParcelProperties
         parcel.rho() = constProps_.rho0();
     }
 
-    const scalar carrierDt = solution_.deltaT();
+    const scalar carrierDt = solution_.deltaTValue();
     parcel.stepFraction() = (carrierDt - lagrangianDt)/carrierDt;
     parcel.typeId() = constProps_.parcelTypeId();
 }
@@ -582,7 +582,7 @@ template<class TrackData>
 void  Foam::KinematicCloud<CloudType>::motion(TrackData& td)
 {
     td.part() = TrackData::tpLinearTrack;
-    CloudType::move(td,  solution_.deltaT());
+    CloudType::move(td,  solution_.deltaTValue());
 
     updateCellOccupancy();
 }
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H
index 681712f6e482a4c75477bb1a1ee5e3f334c75bb6..5987192bfdd802d99378dfe585c228780a3da7f8 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H
@@ -332,10 +332,10 @@ Foam::KinematicCloud<CloudType>::SU(volVectorField& U) const
     {
         if (solution_.semiImplicit("U"))
         {
-            return
-                UTrans()/(mesh_.V()*this->db().time().deltaT())
-              - fvm::Sp(UCoeff()/mesh_.V(), U)
-              + UCoeff()/mesh_.V()*U;
+            const DimensionedField<scalar, volMesh>
+                Vdt(mesh_.V()*this->db().time().deltaT());
+
+            return UTrans()/Vdt - fvm::Sp(UCoeff()/Vdt, U) + UCoeff()/Vdt*U;
         }
         else
         {
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.H
index 1162df65062b2b399c0c2cf65166226626f3e530..cb1c8330b325c87391aaf26b77fd690bafb1ea6d 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.H
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.H
@@ -169,7 +169,10 @@ public:
             inline label nextIter();
 
             //- Return the time step
-            inline scalar deltaT() const;
+            inline scalar deltaTValue() const;
+
+            //- Return the time step
+            inline const dimensionedScalar deltaT() const;
 
             //- Return const access to the coupled flag
             inline const Switch coupled() const;
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolutionI.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolutionI.H
index 37aad4dbdffa4a47a6dcacdd950d4936e8565511..a5da04150d9ac1e117fbb3a760fc02acf8d55e60 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolutionI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolutionI.H
@@ -95,12 +95,18 @@ inline Foam::label Foam::cloudSolution::nextIter()
 }
 
 
-inline Foam::scalar Foam::cloudSolution::deltaT() const
+inline Foam::scalar Foam::cloudSolution::deltaTValue() const
 {
     return deltaT_;
 }
 
 
+inline const Foam::dimensionedScalar Foam::cloudSolution::deltaT() const
+{
+    return dimensionedScalar("cloudSolution::deltaT", dimTime, deltaT_);
+}
+
+
 inline const Foam::Switch Foam::cloudSolution::coupled() const
 {
     return coupled_;
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
index 79b66f87ff079e8636423e11dc290396e12bd893..52c33017f33e8dddb48da85f80100022e4ab03c3 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
@@ -114,7 +114,7 @@ inline Foam::tmp<Foam::fvScalarMatrix> Foam::ReactingCloud<CloudType>::SYi
             volScalarField& sourceField = trhoTrans();
 
             sourceField.internalField() =
-                rhoTrans_[i]/(this->db().time().deltaT()*this->mesh().V());
+                rhoTrans_[i]/(this->db().time().deltaTValue()*this->mesh().V());
 
             const dimensionedScalar YiSMALL("YiSMALL", dimless, SMALL);
 
@@ -127,7 +127,7 @@ inline Foam::tmp<Foam::fvScalarMatrix> Foam::ReactingCloud<CloudType>::SYi
             tmp<fvScalarMatrix> tfvm(new fvScalarMatrix(Yi, dimMass/dimTime));
             fvScalarMatrix& fvm = tfvm();
 
-            fvm.source() = -rhoTrans_[i]/this->db().time().deltaT();
+            fvm.source() = -rhoTrans_[i]/this->db().time().deltaTValue();
 
             return tfvm;
         }
@@ -167,7 +167,7 @@ Foam::ReactingCloud<CloudType>::Srho(const label i) const
     if (this->solution().coupled())
     {
         scalarField& rhoi = tRhoi();
-        rhoi = rhoTrans_[i]/(this->db().time().deltaT()*this->mesh().V());
+        rhoi = rhoTrans_[i]/(this->db().time().deltaTValue()*this->mesh().V());
     }
 
     return tRhoi;
@@ -209,7 +209,7 @@ Foam::ReactingCloud<CloudType>::Srho() const
             sourceField += rhoTrans_[i];
         }
 
-        sourceField /= this->db().time().deltaT()*this->mesh().V();
+        sourceField /= this->db().time().deltaTValue()*this->mesh().V();
     }
 
     return trhoTrans;
@@ -249,7 +249,7 @@ Foam::ReactingCloud<CloudType>::Srho(volScalarField& rho) const
             {
                 sourceField += rhoTrans_[i];
             }
-            sourceField /= this->db().time().deltaT()*this->mesh().V();
+            sourceField /= this->db().time().deltaTValue()*this->mesh().V();
 
             return fvm::SuSp(trhoTrans()/rho, rho);
         }
diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C
index 2dbe453580df4c20539e644a554d937f7c7f15b1..e0365b54e21e4241a7b9127f7f00de2523382f42 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C
@@ -127,7 +127,7 @@ Foam::ThermoCloud<CloudType>::ThermoCloud
                 IOobject::AUTO_WRITE
             ),
             this->mesh(),
-            dimensionedScalar("zero", dimEnergy/dimTime/dimTemperature, 0.0)
+            dimensionedScalar("zero", dimEnergy/dimTemperature, 0.0)
         )
     )
 
diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H
index c774133cb090b864b393eb02112786fa9239ceac..688938543138000c7902916e67d4f0943196401f 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H
@@ -138,11 +138,13 @@ Foam::ThermoCloud<CloudType>::Sh(volScalarField& hs) const
         if (this->solution().semiImplicit("hs"))
         {
             const volScalarField Cp(thermo_.thermo().Cp());
+            const DimensionedField<scalar, volMesh>
+                Vdt(this->mesh().V()*this->db().time().deltaT());
 
             return
-                hsTrans()/(this->mesh().V()*this->db().time().deltaT())
-              - fvm::Sp(hsCoeff()/(Cp*this->mesh().V()), hs)
-              + hsCoeff()/(Cp*this->mesh().V())*hs;
+                hsTrans()/Vdt
+              - fvm::Sp(hsCoeff()/(Cp*Vdt), hs)
+              + hsCoeff()/(Cp*Vdt)*hs;
         }
         else
         {
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
index 0a3e05d200fa753ee8120aa0988f8cee3018b3d8..40e3efcb734164bbd55e566ac5689202453515d7 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
@@ -202,7 +202,7 @@ const Foam::vector Foam::KinematicParcel<ParcelType>::calcVelocity
     const vector abp = (Feff.Sp()*Uc_ + (Feff.Su() + Su))/mass;
     const scalar bp = Feff.Sp()/mass;
 
-    Spu = Feff.Sp()*dt/td.cloud().solution().deltaT();
+    Spu = dt*Feff.Sp();
 
     IntegrationScheme<vector>::integrationResult Ures =
         td.cloud().UIntegrator().integrate(U, dt, abp, bp);
diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C
index 9df054c2d0a43551b2b6927d3ef353b44430bcd6..53a8e5545e703179369c18283446bbc500760a8b 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C
@@ -339,7 +339,7 @@ Foam::scalar Foam::ThermoParcel<ParcelType>::calcHeatTransfer
 
     dhsTrans += dt*htc*As*(0.5*(T + Tnew) - Tc_);
 
-    Cuh = bp*dt/td.cloud().solution().deltaT();
+    Cuh = dt*bp;
 
     return Tnew;
 }
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
index 5bf1c140c3e9147d2f299e77ccd780261870c0a5..fb077dba513c429b85014542912bc8f60bb1e2f9 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
@@ -520,7 +520,7 @@ void Foam::InjectionModel<CloudType>::inject(TrackData& td)
     }
 
     const scalar time = this->owner().db().time().value();
-    const scalar carrierDt = this->owner().solution().deltaT();
+    const scalar carrierDt = this->owner().solution().deltaTValue();
     const polyMesh& mesh = this->owner().mesh();
 
     // Prepare for next time step
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C
index 3236774c18bc85d9ffac240d4d698f77ec9ae65f..70e440b0c3e894a3c3998d86ebbba3f0cfa0faee 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C
@@ -290,7 +290,7 @@ void Foam::PatchInteractionModel<CloudType>::patchData
         }
         else
         {
-            Up = (Cf - Cf00)/this->owner().solution().deltaT();
+            Up = (Cf - Cf00)/this->owner().time().deltaTValue();
         }
 
         if (mag(dn) > SMALL)
@@ -314,7 +314,7 @@ void Foam::PatchInteractionModel<CloudType>::patchData
             // angle/dt to give the correct angular velocity vector.
             omega *=
                 Foam::asin(magOmega)
-               /(magOmega*this->owner().solution().deltaT());
+               /(magOmega*this->owner().time().deltaTValue());
 
             // Project position onto face and calculate this position
             // relative to the face centre.