diff --git a/applications/solvers/multiphase/interFoam/alphaEqn.H b/applications/solvers/multiphase/interFoam/alphaEqn.H
index 96f8473e91b5dd3ff43797cdcd603e8249afde0c..2a90edea65158cd75cce95438b006c7d2b3aa4f7 100644
--- a/applications/solvers/multiphase/interFoam/alphaEqn.H
+++ b/applications/solvers/multiphase/interFoam/alphaEqn.H
@@ -82,7 +82,7 @@
               ? fv::localEulerDdtScheme<scalar>
                 (
                     mesh,
-                    trSubDeltaT().name()
+                    nAlphaSubCycles > 1 ? "rSubDeltaT" : "rDeltaT"
                 ).fvmDdt(alpha1)
               : fv::EulerDdtScheme<scalar>(mesh).fvmDdt(alpha1)
             )
diff --git a/applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H b/applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H
index 5db9f16546180ca8b428eb2527dd5798c4acddba..71de0772332d5d3b173be4afb9c1cd77d26288ee 100644
--- a/applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H
+++ b/applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H
@@ -13,6 +13,16 @@ if (nAlphaSubCycles > 1)
         dimensionedScalar("0", rhoPhi.dimensions(), 0)
     );
 
+    tmp<volScalarField> trSubDeltaT;
+
+    if (LTS)
+    {
+        trSubDeltaT = tmp<volScalarField>
+        (
+            new volScalarField("rSubDeltaT", trDeltaT()*nAlphaSubCycles)
+        );
+    }
+
     for
     (
         subCycle<volScalarField> alphaSubCycle(alpha1, nAlphaSubCycles);
diff --git a/applications/solvers/multiphase/interFoam/createRDeltaT.H b/applications/solvers/multiphase/interFoam/createRDeltaT.H
deleted file mode 100644
index b45dff137e4df5fb5005062e10f75c289812f4d1..0000000000000000000000000000000000000000
--- a/applications/solvers/multiphase/interFoam/createRDeltaT.H
+++ /dev/null
@@ -1,47 +0,0 @@
-bool LTS =
-    word(mesh.ddtScheme("default"))
- == fv::localEulerDdtScheme<scalar>::typeName;
-
-tmp<volScalarField> trDeltaT;
-tmp<volScalarField> trSubDeltaT;
-
-if (LTS)
-{
-    scalar maxDeltaT
-    (
-        pimple.dict().lookupOrDefault<scalar>("maxDeltaT", GREAT)
-    );
-
-    trDeltaT = tmp<volScalarField>
-    (
-        new volScalarField
-        (
-            IOobject
-            (
-                "rDeltaT",
-                runTime.timeName(),
-                mesh,
-                IOobject::NO_READ,
-                IOobject::AUTO_WRITE
-            ),
-            mesh,
-            1/dimensionedScalar("maxDeltaT", dimTime, maxDeltaT),
-            zeroGradientFvPatchScalarField::typeName
-        )
-    );
-
-    trSubDeltaT = tmp<volScalarField>
-    (
-        new volScalarField
-        (
-            IOobject
-            (
-                "rSubDeltaT",
-                runTime.timeName(),
-                mesh
-            ),
-            mesh,
-            1/dimensionedScalar("maxDeltaT", dimTime, maxDeltaT)
-        )
-    );
-}
diff --git a/applications/solvers/multiphase/interFoam/setRDeltaT.H b/applications/solvers/multiphase/interFoam/setRDeltaT.H
index 0752857a9b20468b8a05ba8a438a49e443c08b7f..01bb8aa411ce23424216641173a206e932ade3e1 100644
--- a/applications/solvers/multiphase/interFoam/setRDeltaT.H
+++ b/applications/solvers/multiphase/interFoam/setRDeltaT.H
@@ -1,6 +1,5 @@
 {
     volScalarField& rDeltaT = trDeltaT();
-    volScalarField& rSubDeltaT = trSubDeltaT();
 
     const dictionary& pimpleDict = pimple.dict();
 
@@ -134,9 +133,4 @@
             << gMin(1/rDeltaT.internalField())
             << ", " << gMax(1/rDeltaT.internalField()) << endl;
     }
-
-    const dictionary& alphaControls = mesh.solverDict(alpha1.name());
-    label nAlphaSubCycles(readLabel(alphaControls.lookup("nAlphaSubCycles")));
-
-    rSubDeltaT = rDeltaT*nAlphaSubCycles;
 }
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C
index 48b9703ebeee6f9eb96b8f9186aa2422dca06bad..3ce13f2c43af1cf8d3ad7a1631c38630cb461c27 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C
@@ -175,6 +175,10 @@ void Foam::twoPhaseSystem::solve()
     label nAlphaSubCycles(readLabel(alphaControls.lookup("nAlphaSubCycles")));
     label nAlphaCorr(readLabel(alphaControls.lookup("nAlphaCorr")));
 
+    bool LTS =
+        word(mesh.ddtScheme("default"))
+     == fv::localEulerDdtScheme<scalar>::typeName;
+
     word alphaScheme("div(phi," + alpha1.name() + ')');
     word alpharScheme("div(phir," + alpha1.name() + ')');
 
@@ -316,6 +320,22 @@ void Foam::twoPhaseSystem::solve()
 
         if (nAlphaSubCycles > 1)
         {
+            tmp<volScalarField> trSubDeltaT;
+
+            if (LTS)
+            {
+                const volScalarField& rDeltaT =
+                    mesh.objectRegistry::lookupObject<volScalarField>
+                    (
+                        "rDeltaT"
+                    );
+
+                trSubDeltaT = tmp<volScalarField>
+                (
+                    new volScalarField("rSubDeltaT", rDeltaT*nAlphaSubCycles)
+                );
+            }
+
             for
             (
                 subCycle<volScalarField> alphaSubCycle(alpha1, nAlphaSubCycles);
diff --git a/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C b/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C
index ecd7671fe95b5750e051430c35de07b45d696bc7..75180f09dcadddfc0a30f291354bd3c13e29687e 100644
--- a/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C
+++ b/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C
@@ -96,7 +96,10 @@ void Foam::MULES::correct
     if (LTS)
     {
         const volScalarField& rDeltaT =
-            mesh.objectRegistry::lookupObject<volScalarField>("rSubDeltaT");
+            mesh.objectRegistry::lookupObject<volScalarField>
+            (
+                mesh.time().subCycling() ? "rSubDeltaT" : "rDeltaT"
+            );
 
         limitCorr
         (
diff --git a/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C b/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C
index 83eebdb1523ab3fa3a7a3c7e4478bcdfe4acadf6..b0205beccbdde1371200a1005573e24c7f7b2e51 100644
--- a/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C
+++ b/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C
@@ -118,7 +118,10 @@ void Foam::MULES::explicitSolve
     if (LTS)
     {
         const volScalarField& rDeltaT =
-            mesh.objectRegistry::lookupObject<volScalarField>("rSubDeltaT");
+            mesh.objectRegistry::lookupObject<volScalarField>
+            (
+                mesh.time().subCycling() ? "rSubDeltaT" : "rDeltaT"
+            );
 
         limit
         (