From 15268770f568735870d24e04fda15a96299d8073 Mon Sep 17 00:00:00 2001
From: Florian Heilmann <Florian.Heilmann@gmx.net>
Date: Thu, 4 May 2017 11:34:28 +0200
Subject: [PATCH] Fix broken fwretract recovery extruder feedrate

When both lowering and recovery are performed using the same "prepare_move_to_destination()" the extruder recovery feedrate ends up being ignored and, instead, is only capped by either the maximum e-speed or the time it takes to perform the z-lowering.
Performing the two moves separately from each other ensures a correct recovery feedrate.
---
 Marlin/Marlin_main.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index d88afc323e..a5da264326 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -3062,6 +3062,8 @@ static void homeaxis(const AxisEnum axis) {
         // Pretend current position is higher. Z will lower on the next move
         current_position[Z_AXIS] += retract_zlift;
         SYNC_PLAN_POSITION_KINEMATIC();
+        // Lower Z
+        prepare_move_to_destination();
       }
 
       feedrate_mm_s = retract_recover_feedrate_mm_s;
@@ -3069,7 +3071,7 @@ static void homeaxis(const AxisEnum axis) {
       current_position[E_AXIS] -= move_e / volumetric_multiplier[active_extruder];
       sync_plan_position_e();
 
-      // Lower Z and recover E
+      // Recover E
       prepare_move_to_destination();
     }