diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index f7e8a43d..d0235b8b 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3622,12 +3622,12 @@ static T gcode_M600_filament_change_z_shift() #ifdef FILAMENTCHANGE_ZADD static_assert(Z_MAX_POS < (255 - FILAMENTCHANGE_ZADD), "Z-range too high, change the T type from uint8_t to uint16_t"); // avoid floating point arithmetics when not necessary - results in shorter code + T z_shift = T(FILAMENTCHANGE_ZADD); // always move above printout T ztmp = T( current_position[Z_AXIS] ); - T z_shift = 0; - if(ztmp < T(25)){ - z_shift = T(25) - ztmp; // make sure to be at least 25mm above the heat bed - } - return z_shift + T(FILAMENTCHANGE_ZADD); // always move above printout + if((ztmp + z_shift) < T(MIN_Z_FOR_SWAP)){ + z_shift = T(MIN_Z_FOR_SWAP) - ztmp; // make sure to be at least 25mm above the heat bed + } + return z_shift; #else return T(0); #endif