diff --git a/NumLib/TimeStepping/Algorithms/IterationNumberBasedTimeStepping.cpp b/NumLib/TimeStepping/Algorithms/IterationNumberBasedTimeStepping.cpp
index 252476d12254e46335ce5c40a79cea11f34a7b62..a6e63f2cb2296f2687cec8731f49815a0364d3db 100644
--- a/NumLib/TimeStepping/Algorithms/IterationNumberBasedTimeStepping.cpp
+++ b/NumLib/TimeStepping/Algorithms/IterationNumberBasedTimeStepping.cpp
@@ -71,6 +71,10 @@ bool IterationNumberBasedTimeStepping::next(double const /*solution_error*/,
     else
     {
         ++_n_rejected_steps;
+        // time step was rejected, keep dt for the next dt computation.
+        _ts_prev =  // essentially equal to _ts_prev.dt = _ts_current.dt.
+            TimeStep{_ts_prev.previous(),
+                     _ts_prev.previous() + _ts_current.dt(), _ts_prev.steps()};
     }
 
     // prepare the next time step info