but my problem is that I don't move my particles depending on time, but depending on their distance to where I want to move them to.
Actually your movement is time dependent. You do something like this:
Code:
 vel := vel + acc*dt;
 pos := pos + vel*dt;
where dt is time step. You just set dt to one. If you keep dt constant you have frame dependent movement - the faste CPU you have, the faster your objects will move. To make it frame independent so it will move at same speed on slow and fast machines use dt = time_elapsed / 1000 where time_elapsed is time difference of last and curren frame (in miliseconds).

But to anwser your questions. This oscillating behaviour does it happen when you are almost at the destination? you use code to detect if you have reached the destination like this:
Code:
if &#40;Abs&#40;x-destx&#41; < EPS&#41; and &#40;y-desty&#41; < EPS&#41; then
 StopMoving
else
 KeepMoving;
The oscillations will appear if the EPS constant is to small.

As for asymptotic approach try this
Code:
d &#58;= sqrt&#40;pos*pos-dest*dest&#41;; //d - distance to destination
pos &#58;= pos + 0.5*d*dt; //dt - timestep
Hope it will help you.