In BLDCMotor::move(), if you pass a new target as a parameter, it is sometimes ignored.
This is due to this code being at the wrong place. I think it should be placed at the very top of the function.
Indeed, if either (motion_cnt++ < motion_downsample) or (!enabled), the new_target parameter is ignored.