diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp
index 4d4f1ce65d8ab33cc2314a92a7f8cb6bf6bba78f..13f21162373d88a727454a40472eae5319f44bc1 100644
--- a/Marlin/ultralcd.cpp
+++ b/Marlin/ultralcd.cpp
@@ -77,6 +77,7 @@ static void menu_action_setting_edit_callback_float52(const char* pstr, float* p
 static void menu_action_setting_edit_callback_long5(const char* pstr, unsigned long* ptr, unsigned long minValue, unsigned long maxValue, menuFunc_t callbackFunc);
 
 #define ENCODER_STEPS_PER_MENU_ITEM 5
+#define ENCODER_FEEDRATE_DEADZONE 10
 
 /* Helper macros for menus */
 #define START_MENU() do { \
@@ -158,10 +159,34 @@ static void lcd_status_screen()
     if (LCD_CLICKED)
     {
         currentMenu = lcd_main_menu;
+		encoderPosition = 0;
         lcd_quick_feedback();
     }
-    feedmultiply += int(encoderPosition);
-    encoderPosition = 0;
+
+	// Dead zone at 100% feedrate
+	if (feedmultiply < 100 && (feedmultiply + int(encoderPosition)) > 100 ||
+			feedmultiply > 100 && (feedmultiply + int(encoderPosition)) < 100)
+	{
+		encoderPosition = 0;
+		feedmultiply = 100;
+	}
+	
+	if (feedmultiply == 100 && int(encoderPosition) > ENCODER_FEEDRATE_DEADZONE)
+	{
+		feedmultiply += int(encoderPosition) - ENCODER_FEEDRATE_DEADZONE;
+		encoderPosition = 0;
+	}
+	else if (feedmultiply == 100 && int(encoderPosition) < -ENCODER_FEEDRATE_DEADZONE)
+	{
+		feedmultiply += int(encoderPosition) + ENCODER_FEEDRATE_DEADZONE;
+		encoderPosition = 0;	
+	}
+	else if (feedmultiply != 100)
+	{
+    	feedmultiply += int(encoderPosition);
+		encoderPosition = 0;
+    }
+
     if (feedmultiply < 10)
         feedmultiply = 10;
     if (feedmultiply > 999)