diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index c5d411cf85576d74bb006c43e1a0edf252046fa1..e60f66e094a929b0c2a47067a5bb696cc0c4dd22 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -1170,12 +1170,6 @@ inline void get_serial_commands() {
         if (card_eof) {
           SERIAL_PROTOCOLLNPGM(MSG_FILE_PRINTED);
           print_job_timer.stop();
-          char time[30];
-          millis_t t = print_job_timer.duration();
-          sprintf_P(time, PSTR("%i " MSG_END_HOUR " %i " MSG_END_MINUTE), int(t / 60 / 60), int(t / 60) % 60);
-          SERIAL_ECHO_START;
-          SERIAL_ECHOLN(time);
-          lcd_setstatus(time, true);
           card.printingHasFinished();
           card.checkautostart(true);
         }
diff --git a/Marlin/cardreader.cpp b/Marlin/cardreader.cpp
index c7e160481e38afc058b187738f577023db3074c0..dd6ff9f53d6dcf2c2c2c5ef799412a3af9fb9a7b 100644
--- a/Marlin/cardreader.cpp
+++ b/Marlin/cardreader.cpp
@@ -602,19 +602,19 @@ void CardReader::updir() {
 
 void CardReader::printingHasFinished() {
   stepper.synchronize();
+  file.close();
   if (file_subcall_ctr > 0) { // Heading up to a parent file that called current as a procedure.
-    file.close();
     file_subcall_ctr--;
     openFile(proc_filenames[file_subcall_ctr], true, true);
     setIndex(filespos[file_subcall_ctr]);
     startFileprint();
   }
   else {
-    file.close();
     sdprinting = false;
     if (SD_FINISHED_STEPPERRELEASE)
       enqueue_and_echo_commands_P(PSTR(SD_FINISHED_RELEASECOMMAND));
-    thermalManager.autotempShutdown();
+    print_job_timer.stop();
+    enqueue_and_echo_commands_P(PSTR("M31"));
   }
 }