Discrete Repeating Animator Trouble

I am attempting to create an animation that uses discrete steps for each part. Currently I do not have discrete steps and the EDT is getting swamped. I have 5-6 of these running at once and the volume of repaints is very large.

To get around this, I would like to create an animator that only paints at most 5 times per duration (500ms) and have it honor RepeatBehavior.REVERSE. I might tweak the steps per duration for aesthetics. If the EDT still gets swamped at 5 times per 500ms, I might lower the steps to 4.

This mostly works, however it does not repeat at all. It runs once and quits. I put a check in my alpha setter so the component will only repaint if the alpha changes. That check probably still keeps too many instructions on the EDT. Any suggestions on how to correctly do this?