there is the algorithm given at vec_lerp() page, which is the vector equivalent of smooth(). maybe you need to use different smooth() functions for coordinates and speed... some weeks ago I created a smoothing function for my tile based unit movements, I mean the best to customize the parameters by smooth(), or a similar own function to your actual needs.