diff --git a/src/main/run.cc b/src/main/run.cc
index f99e806afbb30d22d0ca61c88b9f11c934c7346d..70ebf393936167f5ccfa60080619cc97c5cdc4a6 100644
--- a/src/main/run.cc
+++ b/src/main/run.cc
@@ -172,11 +172,11 @@ void sim::run(void)
         {
           mpi_printf("\nFinal time=%g reached. Simulation ends.\n", All.TimeMax);
 
-          if(All.Ti_lastoutput != All.Ti_Current) /* make a snapshot at the final time in case none has been produced at this time */
+          /* make a snapshot at the final time in case none has been produced at this time yet */
+          if(All.Ti_lastoutput != All.Ti_Current)
             {
-              snap_io Snap(&Sp, Communicator, All.SnapFormat); /* get an I/O object */
-              /* this snapshot will be overwritten if All.TimeMax is increased and the run is continued */
-              Snap.write_snapshot(All.SnapshotFileCount++, NORMAL_SNAPSHOT);
+              All.Ti_nextoutput = All.Ti_Current;
+              create_snapshot_if_desired();
             }
 
           break;