Okay, thanks for the replies everyone. I appreciate it and hope to return the favor sometime. That said, I'll try to keep it brief.
I am adding (or subtracting) the radius of the ball to TOP,BOTTOM,LEFT,and RIGHT sides of the bricks for purposes of collision. Additionally, the ball moves fine until a collision is detected so it's not moving too fast to see. So the simple things are out.
The obvious is that the ball's position is being set to the point of collision on the block, which is a point that will trigger a collision. However, the animation code in the game loop is before the collision code, and I set the position to be the point of collision +1, so there is a one pixel difference.
And it works perfectly. .. at speeds of around <5,5> or so. Much faster than that and it "sticks" to the surface and vibrates. Which is odd. It suggests that it's repeatedly detecting a collision and inverting the axis, but I don't see how this is possible, and I ESPECIALLY don't see how speed affects this. I'll triple check everything again. . .
If you wish to see I made a test map with one row of blocks straight across the screen and rigged the top reflection to multiply the vector by 1.1 each reflection.
Get it here if you happen to be interested though there's not much to see..
A question. Two posts now (and a search engine result) have told be to find the time of collision. Each frame, I am saving the ball's last position to a variable before updating it. Shouldn't the distance from the last position alone suffice? If not, why is time important?