diff --git a/ProcessLib/TimeLoop.cpp b/ProcessLib/TimeLoop.cpp
index fb97d6f59a6c12a022a0ed2d73155c0147fcdd46..2ce9cb19695085e60d61bf207acb9f60fc547611 100644
--- a/ProcessLib/TimeLoop.cpp
+++ b/ProcessLib/TimeLoop.cpp
@@ -495,12 +495,6 @@ void TimeLoop::initialize()
 
     updateDeactivatedSubdomains(_per_process_data, _start_time);
 
-    // Output initial conditions
-    {
-        preOutputInitialConditions(_start_time);
-        outputSolutions(0, _start_time, &Output::doOutput);
-    }
-
     auto const time_step_constraints = generateOutputTimeStepConstraints(
         calculateUniqueFixedTimesForAllOutputs(_outputs));
 
@@ -508,6 +502,12 @@ void TimeLoop::initialize()
         computeTimeStepping(0.0, _current_time, _accepted_steps,
                             _rejected_steps, time_step_constraints);
 
+    // Output initial conditions
+    {
+        preOutputInitialConditions(_start_time, _dt);
+        outputSolutions(0, _start_time, &Output::doOutput);
+    }
+
     calculateNonEquilibriumInitialResiduum(
         _per_process_data, _process_solutions, _process_solutions_prev);
 }
@@ -752,7 +752,7 @@ TimeLoop::~TimeLoop()
     }
 }
 
-void TimeLoop::preOutputInitialConditions(const double t) const
+void TimeLoop::preOutputInitialConditions(const double t, const double dt) const
 {
     for (auto const& process_data : _per_process_data)
     {
@@ -766,9 +766,6 @@ void TimeLoop::preOutputInitialConditions(const double t) const
         auto const process_id = process_data->process_id;
         auto& pcs = process_data->process;
 
-        // dummy value to handle the time derivative terms more or less
-        // correctly, i.e. to ignore them.
-        double const dt = 1;
         process_data->time_disc->nextTimestep(t, dt);
 
         pcs.preTimestep(_process_solutions, _start_time, dt, process_id);
diff --git a/ProcessLib/TimeLoop.h b/ProcessLib/TimeLoop.h
index 43c5c112529bb0d0f2151f27eed92937965599c8..e96047a97925c01f2417d4f660ebcd5d8f385ca4 100644
--- a/ProcessLib/TimeLoop.h
+++ b/ProcessLib/TimeLoop.h
@@ -122,7 +122,7 @@ private:
 private:
     std::vector<std::function<double(double, double)>>
     generateOutputTimeStepConstraints(std::vector<double>&& fixed_times) const;
-    void preOutputInitialConditions(const double t) const;
+    void preOutputInitialConditions(const double t, const double dt) const;
     std::vector<GlobalVector*> _process_solutions;
     std::vector<GlobalVector*> _process_solutions_prev;
     std::vector<Output> _outputs;