diff --git a/Marlin/Marlin.pde b/Marlin/Marlin.pde index 13b2b11dbb..f48a41921d 100644 --- a/Marlin/Marlin.pde +++ b/Marlin/Marlin.pde @@ -1602,8 +1602,14 @@ void prepare_move() { clamp_to_software_endstops(destination); - previous_millis_cmd = millis(); - plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate*feedmultiply/60/100.0, active_extruder); + previous_millis_cmd = millis(); + // Do not use feedmultiply for E or Z only moves + if( (current_position[X_AXIS] == destination [X_AXIS]) && (current_position[Y_AXIS] == destination [Y_AXIS])) { + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); + } + else { + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate*feedmultiply/60/100.0, active_extruder); + } for(int8_t i=0; i < NUM_AXIS; i++) { current_position[i] = destination[i]; }