diff --git a/bfps/cpp/full_code/direct_numerical_simulation.cpp b/bfps/cpp/full_code/direct_numerical_simulation.cpp
index 7b179fc5433d36afd80d112cdb9ab5e1d1bd47b0..edc2f99497a21368c63348167190dc6c64b44712 100644
--- a/bfps/cpp/full_code/direct_numerical_simulation.cpp
+++ b/bfps/cpp/full_code/direct_numerical_simulation.cpp
@@ -103,11 +103,11 @@ int direct_numerical_simulation::main_loop(void)
         this->step();
         if (this->iteration % this->niter_out == 0)
             this->write_checkpoint();
+        this->print_simple_timer(
+                "iteration " + std::to_string(this->iteration));
         this->check_stopping_condition();
         if (this->stop_code_now)
             break;
-        this->print_simple_timer(
-                "iteration " + std::to_string(this->iteration));
     }
     this->do_stats();
     this->print_simple_timer(
diff --git a/bfps/cpp/full_code/postprocess.cpp b/bfps/cpp/full_code/postprocess.cpp
index 1d3e6890a6fbd572e78ef10ac9e96dd52696198f..edb5929f72c5197c123f8f4e20d426ca1ad9eb6f 100644
--- a/bfps/cpp/full_code/postprocess.cpp
+++ b/bfps/cpp/full_code/postprocess.cpp
@@ -22,6 +22,10 @@ int postprocess::main_loop(void)
         this->work_on_current_iteration();
         this->print_simple_timer(
                 "iteration " + std::to_string(this->iteration));
+
+        this->check_stopping_condition();
+        if (this->stop_code_now)
+            break;
     }
     return EXIT_SUCCESS;
 }