From da0d91a79b1bf0fd1c4d4a568415073b70d17573 Mon Sep 17 00:00:00 2001
From: Wurstnase <tonnhofer@gmail.com>
Date: Mon, 20 Apr 2015 23:28:46 +0200
Subject: [PATCH] max endstopp

no user will home to 0 with a max endstopp
---
 Marlin/Marlin_main.cpp | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 64d3d1f350..22f037075d 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -1947,12 +1947,18 @@ inline void gcode_G28() {
     if (home_all_axis || homeY) HOMEAXIS(Y);
 
     // Set the X position, if included
-    if (code_seen(axis_codes[X_AXIS]) && code_has_value())
-      current_position[X_AXIS] = code_value();
+    if (code_seen(axis_codes[X_AXIS]) && code_has_value()) {
+      float v = code_value();
+      if (X_HOME_DIR == -1 || v != 0) // filter 0 with max-endstopps
+        current_position[X_AXIS] = v;
+    }
 
     // Set the Y position, if included
-    if (code_seen(axis_codes[Y_AXIS]) && code_has_value())
-      current_position[Y_AXIS] = code_value();
+    if (code_seen(axis_codes[Y_AXIS]) && code_has_value()) {
+      float v = code_value();
+      if (Y_HOME_DIR == -1 || v != 0) // filter 0 with max-endstopps
+        current_position[Y_AXIS] = code_value();
+    }
 
     // Home Z last if homing towards the bed
     #if Z_HOME_DIR < 0
@@ -2038,8 +2044,11 @@ inline void gcode_G28() {
     #endif // Z_HOME_DIR < 0
 
     // Set the Z position, if included
-    if (code_seen(axis_codes[Z_AXIS]) && code_has_value())
+    if (code_seen(axis_codes[Z_AXIS]) && code_has_value()) {
+      float v = code_value();
+      if (Z_HOME_DIR == -1 || v != 0) // filter 0 with max-endstopps
       current_position[Z_AXIS] = code_value();
+    }
 
     #if defined(ENABLE_AUTO_BED_LEVELING) && (Z_HOME_DIR < 0)
       if (home_all_axis || homeZ) current_position[Z_AXIS] += zprobe_zoffset;  // Add Z_Probe offset (the distance is negative)