Hi cmparker,
at our facility we have hundreds of closedloop stepper axes, tuned and working ok. Over the time we have seen lots of different faults occur that can exhibit as you have described, so here are some extras to consider:
Stepper motor missing a leg of a phase - can make the motor go the wrong way and move by itself via preload.
Phase short to ground - if not "short enough" to trip the GB, can result in a weak motion in one direction.
Vacuum or preload forces? - can force a motor the wrong way/move by itself.
One leg of the encoder feedback missing - if you lose one "wire" of a quadrature signal some magical things can happen. (Including noise on the signal).
Noise on the encoder - resulting in a "Phantom" following error which the axis tries to compensate for.
Cumulative Following error at the end of the move, j/ and then it tries to "unwrap" the FE on the next move.
Too much Intergral ixx33, can cause to motor to slowly wind one way then the other.
Phase offset is set or poorly balanced - what are your ixx29 ixx79? these can add offset to the motor phases to balance the current in each phase. If you have a pair of current clamps you can play with this, or feel the motor shaft for equal torque in each direction.
Amp configuration changing; use a plc to ensure stepper configuration has not changed to DC servo.
Minus sign in front of ixx22, will send the motor the wrong way through the limits!
Hope this might help...
Cheers