Sounds like a job for TimeDelta!
Give it an initial speed. Each tick, subtract some multiple of TimeDelta from its speed. It'll go out, eventually slow down, turn around, and accelerate back to you.
More complicated events could make more complicated behaviors of course.
Sounds like a good way of doing it to me.
My first thought was that this was too simple of a method because it only affects horizontal motion. My second thought was that I think it would get much more complicated to start doing vertical motion as well. I'd stick to fieari's method, at least for awhile.