diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 2058372a01..bcf9cc5c55 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -4748,8 +4748,17 @@ void home_all_axes() { gcode_G28(true); }
         front_probe_bed_position = parser.seenval('F') ? (int)RAW_Y_POSITION(parser.value_linear_units()) : FRONT_PROBE_BED_POSITION;
         back_probe_bed_position  = parser.seenval('B') ? (int)RAW_Y_POSITION(parser.value_linear_units()) : BACK_PROBE_BED_POSITION;
 
-        if ( !position_is_reachable_by_probe(left_probe_bed_position, front_probe_bed_position)
-          || !position_is_reachable_by_probe(right_probe_bed_position, back_probe_bed_position)) {
+        if (
+          #if IS_SCARA || ENABLED(DELTA)
+               !position_is_reachable_by_probe(left_probe_bed_position, 0)
+            || !position_is_reachable_by_probe(right_probe_bed_position, 0)
+            || !position_is_reachable_by_probe(0, front_probe_bed_position)
+            || !position_is_reachable_by_probe(0, back_probe_bed_position)
+          #else
+               !position_is_reachable_by_probe(left_probe_bed_position, front_probe_bed_position)
+            || !position_is_reachable_by_probe(right_probe_bed_position, back_probe_bed_position)
+          #endif
+        ) {
           SERIAL_PROTOCOLLNPGM("? (L,R,F,B) out of bounds.");
           return;
         }