diff --git a/ProcessLib/TimeLoop.cpp b/ProcessLib/TimeLoop.cpp
index adb4611a55e9c23bb72a490fa79c7a0489c16837..d8b1a56341a37957e3d82eae01d8e7bbf96f8361 100644
--- a/ProcessLib/TimeLoop.cpp
+++ b/ProcessLib/TimeLoop.cpp
@@ -303,13 +303,14 @@ void TimeLoop::setCoupledSolutions()
     }
 }
 
-double TimeLoop::computeTimeStepping(const double prev_dt, double& t,
-                                     std::size_t& accepted_steps,
-                                     std::size_t& rejected_steps)
+std::pair<double, bool> TimeLoop::computeTimeStepping(
+    const double prev_dt, double& t, std::size_t& accepted_steps,
+    std::size_t& rejected_steps)
 {
     bool all_process_steps_accepted = true;
     // Get minimum time step size among step sizes of all processes.
     double dt = std::numeric_limits<double>::max();
+    bool last_step_rejected = false;
     constexpr double eps = std::numeric_limits<double>::epsilon();
 
     bool const is_initial_step = std::any_of(
@@ -399,7 +400,7 @@ double TimeLoop::computeTimeStepping(const double prev_dt, double& t,
         if (all_process_steps_accepted)
         {
             accepted_steps++;
-            _last_step_rejected = false;
+            last_step_rejected = false;
         }
         else
         {
@@ -407,7 +408,7 @@ double TimeLoop::computeTimeStepping(const double prev_dt, double& t,
             {
                 t -= prev_dt;
                 rejected_steps++;
-                _last_step_rejected = true;
+                last_step_rejected = true;
             }
         }
     }
@@ -423,7 +424,7 @@ double TimeLoop::computeTimeStepping(const double prev_dt, double& t,
     // Check whether the time stepping is stabilized
     if (std::abs(dt - prev_dt) < eps)
     {
-        if (_last_step_rejected)
+        if (last_step_rejected)
         {
             OGS_FATAL(
                 "The new step size of {:g} is the same as that of the previous "
@@ -474,7 +475,7 @@ double TimeLoop::computeTimeStepping(const double prev_dt, double& t,
         }
     }
 
-    return dt;
+    return {dt, last_step_rejected};
 }
 
 /// initialize output, convergence criterion, etc.
@@ -516,8 +517,9 @@ void TimeLoop::initialize()
                         &Output::doOutput);
     }
 
-    _dt = computeTimeStepping(0.0, _current_time, _accepted_steps,
-                                    _rejected_steps);
+    std::tie(_dt, _last_step_rejected) = computeTimeStepping(
+        0.0, _current_time, _accepted_steps, _rejected_steps);
+
     updateDeactivatedSubdomains(_per_process_data, _start_time);
 
     calculateNonEquilibriumInitialResiduum(
@@ -546,8 +548,8 @@ bool TimeLoop::executeTimeStep()
 
     double const current_time = _current_time;
     // _last_step_rejected is also checked in computeTimeStepping.
-    _dt = computeTimeStepping(prev_dt, _current_time, _accepted_steps,
-                              _rejected_steps);
+    std::tie(_dt, _last_step_rejected) = computeTimeStepping(
+        prev_dt, _current_time, _accepted_steps, _rejected_steps);
 
     if (!_last_step_rejected)
     {
diff --git a/ProcessLib/TimeLoop.h b/ProcessLib/TimeLoop.h
index a5d19b8cc29b5318a9230a22a77f763f541253d4..d97f5a61aa0dce817a6da55cec37feda70f02caa 100644
--- a/ProcessLib/TimeLoop.h
+++ b/ProcessLib/TimeLoop.h
@@ -104,10 +104,12 @@ private:
      *                        function.
      *  @param rejected_steps Rejected time steps that are counted in this
      *                        function.
+     *  @return the time step size and the information if the last time step was
+     *  rejected
      */
-    double computeTimeStepping(const double prev_dt, double& t,
-                               std::size_t& accepted_steps,
-                               std::size_t& rejected_steps);
+    std::pair<double, bool> computeTimeStepping(const double prev_dt, double& t,
+                                                std::size_t& accepted_steps,
+                                                std::size_t& rejected_steps);
 
     template <typename OutputClass, typename OutputClassMember>
     void outputSolutions(bool const output_initial_condition, unsigned timestep,