diff --git a/src/language/modules/SchemeModule.cpp b/src/language/modules/SchemeModule.cpp
index db42fb35fac966801e36e22b37aab08e07d9c778..504033a1f57ec2160752f5cfacdd3e83cf289a83 100644
--- a/src/language/modules/SchemeModule.cpp
+++ b/src/language/modules/SchemeModule.cpp
@@ -635,10 +635,11 @@ SchemeModule::SchemeModule()
                                  const std::shared_ptr<const DiscreteFunctionVariant>& entropy,
                                  const std::vector<std::shared_ptr<const IBoundaryConditionDescriptor>>&
                                    bc_descriptor_list,
-                                 const double& dt) -> std::tuple<std::shared_ptr<const MeshVariant>,
-                                                                 std::shared_ptr<const DiscreteFunctionVariant>,
-                                                                 std::shared_ptr<const DiscreteFunctionVariant>,
-                                                                 std::shared_ptr<const DiscreteFunctionVariant>> {
+                                 const double& dt)
+                                -> std::tuple<
+                                  std::shared_ptr<const MeshVariant>, std::shared_ptr<const DiscreteFunctionVariant>,
+                                  std::shared_ptr<const DiscreteFunctionVariant>,
+                                  std::shared_ptr<const DiscreteFunctionVariant>, std::shared_ptr<const double>> {
                                 return ImplicitAcousticO2SolverHandlerModified{ImplicitAcousticO2SolverHandlerModified::
                                                                                  SolverType::Glace2States,
                                                                                rho,
diff --git a/src/scheme/ImplicitAcousticO2SolverModified.cpp b/src/scheme/ImplicitAcousticO2SolverModified.cpp
index 113c860ff56e484bc02e388d7064b5fa8ca83c88..c1674e2aced4bd09283dc2bcca8b9b5672250b92 100644
--- a/src/scheme/ImplicitAcousticO2SolverModified.cpp
+++ b/src/scheme/ImplicitAcousticO2SolverModified.cpp
@@ -1626,10 +1626,12 @@ class ImplicitAcousticO2SolverHandlerModified::ImplicitAcousticO2Solver final
   }
 
  public:
+  double dt_f = 0;
   std::tuple<std::shared_ptr<const MeshVariant>,
              std::shared_ptr<const DiscreteFunctionVariant>,
              std::shared_ptr<const DiscreteFunctionVariant>,
-             std::shared_ptr<const DiscreteFunctionVariant>>
+             std::shared_ptr<const DiscreteFunctionVariant>,
+             std::shared_ptr<const double>>
   apply(const double& dt,
         const std::shared_ptr<const MeshType>& mesh,
         const DiscreteScalarFunction& rho,
@@ -1954,7 +1956,8 @@ class ImplicitAcousticO2SolverHandlerModified::ImplicitAcousticO2Solver final
         if (minder) {
           throw NormalError("Negative volume");
         };
-        CFL = true;
+        dt_f = dt_interm;
+        CFL  = true;
       } else {
         dt_interm = 0.5 * dt_interm;
       }
@@ -1970,13 +1973,15 @@ class ImplicitAcousticO2SolverHandlerModified::ImplicitAcousticO2Solver final
     return {std::make_shared<MeshVariant>(new_mesh),
             std::make_shared<DiscreteFunctionVariant>(DiscreteScalarFunction{new_mesh, new_rho}),
             std::make_shared<DiscreteFunctionVariant>(DiscreteVectorFunction{new_mesh, new_u}),
-            std::make_shared<DiscreteFunctionVariant>(DiscreteScalarFunction{new_mesh, new_E})};
+            std::make_shared<DiscreteFunctionVariant>(DiscreteScalarFunction{new_mesh, new_E}),
+            std::make_shared<double>(dt_f)};
   }
 
   std::tuple<std::shared_ptr<const MeshVariant>,
              std::shared_ptr<const DiscreteFunctionVariant>,
              std::shared_ptr<const DiscreteFunctionVariant>,
-             std::shared_ptr<const DiscreteFunctionVariant>>
+             std::shared_ptr<const DiscreteFunctionVariant>,
+             std::shared_ptr<const double>>
   apply(const double& dt,
         const std::shared_ptr<const DiscreteFunctionVariant>& rho,
         const std::shared_ptr<const DiscreteFunctionVariant>& u,
diff --git a/src/scheme/ImplicitAcousticO2SolverModified.hpp b/src/scheme/ImplicitAcousticO2SolverModified.hpp
index 9b2cb10fe36cbd39de57026079ff9038964fd4de..070472b85aebe44758691ff1020b8d07dfb3e2f3 100644
--- a/src/scheme/ImplicitAcousticO2SolverModified.hpp
+++ b/src/scheme/ImplicitAcousticO2SolverModified.hpp
@@ -30,7 +30,8 @@ class ImplicitAcousticO2SolverHandlerModified
     virtual std::tuple<std::shared_ptr<const MeshVariant>,
                        std::shared_ptr<const DiscreteFunctionVariant>,
                        std::shared_ptr<const DiscreteFunctionVariant>,
-                       std::shared_ptr<const DiscreteFunctionVariant>>
+                       std::shared_ptr<const DiscreteFunctionVariant>,
+                       std::shared_ptr<const double>>
     apply(const double& dt,
           const std::shared_ptr<const DiscreteFunctionVariant>& rho,
           const std::shared_ptr<const DiscreteFunctionVariant>& u,