diff --git a/Marlin/duration_t.h b/Marlin/duration_t.h
index 8e08791ff1f8df370701f89b4770700e0a269e8f..dffb832545dcb98f0d85b7e1c430db39a8566d24 100644
--- a/Marlin/duration_t.h
+++ b/Marlin/duration_t.h
@@ -146,11 +146,12 @@ struct duration_t {
    *  11d 12:33
    */
   void toDigital(char *buffer, bool with_days=false) const {
-    int m = this->minute() % 60;
+    uint16_t h = uint16_t(this->hour() % 24UL),
+             m = uint16_t(this->minute() % 60UL);
     if (with_days)
-      sprintf_P(buffer, PSTR("%id %02i:%02i"), this->day(), this->hour() % 24, m);
+      sprintf_P(buffer, PSTR("%ud %02u:%02u"), this->day(), h, m);
     else
-      sprintf_P(buffer, PSTR("%02i:%02i"), this->hour(), m);
+      sprintf_P(buffer, PSTR("%02u:%02u"), h, m);
   }
 };