Thanks guys!
Using int(sprite.x) makes it work about 80% of the time.
But that reduces as soon as I increase the speed above 1px.
I did already try and put in a function which would calculate the distance between the object and the finishing point and teleport it if it got close enough, but it's pretty ropey.
It goes
System - distance(Sprite.X,Sprite.Y,Sprite.PathX,Sprite.PathY) < 10
set sprite.x to pathX
set sprite.y to pathY
But it it always triggers regardless of distance. Not sure what's going on there.
I'm afraid a capx probably won't help, it's quite messy at the moment