diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index a25a5f036af1102a961c958870aabb2a513ba880..d5dbd6329f9d0d3e34d96a1a18840f2f131e452f 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -1844,12 +1844,15 @@ void process_commands()
 
       codenum = 0;
 
-      bool hasP = code_seen('P');
-      if (hasP) codenum = code_value(); // milliseconds to wait
-
-      bool hasS = code_seen('S');
-      if (hasS) codenum = code_value() * 1000; // seconds to wait
-
+      bool hasP = false, hasS = false;
+      if (code_seen('P')) {
+        codenum = code_value(); // milliseconds to wait
+        hasP = codenum > 0;
+      }
+      if (code_seen('S')) {
+        codenum = code_value() * 1000; // seconds to wait
+        hasS = codenum > 0;
+      }
       if (!hasP && !hasS && *src != '\0') {
         starpos = strchr(src, '*');
         if (starpos != NULL) *(starpos) = '\0';