Hi OldMoses
So this line riiiight here:
until it gets close enough that it must decelerate in order to match the runner's vector upon arrival. It also has to respond to changes in the runner's vector.
The part "on arrival" might wanna be replaced with "before arrival". This will get rid of the weird oscillatory motion at the end, and also be open to when the target velocity changes. The dirty way is to just reduce speed as you get closer, limiting to delta V=0 when you get there, kind of like a shock absorber. However the way you spell this out, its a dead-ringer candidate for derivative matching, just like the two-roads problem detailed in a few places around here. In this analogy, your present trajectory is one road, your desired trajectory is the other road. Okay, just replace "road" with "the ship's past position".
Literally it's like this: If your ship is at one position, with a given slope, and you need to get to a new position and a new slope, guess a polynomial:
Y = A + Bx + Cx^2 + Dx^3
Choose A, B, C, D so that y and y' match at both points x1 and x2. Refresh this calculation every millisecond or so and you will have a terrifying chase-me-down AI. Make sense? (Oh and you want this to be 3D so you have to extrapolate this idea out into a new dimension, which if you already know what's up with vectors, is trivial.)