Oh I bet it's because it doesn't know which side it has collided with, only that it has collided. If that last collision had been with an object to the ball's right then a 45 degree deflection would have been correct. So I suppose I need to calculate which side it impacts on and whether the angle change would cause the ball to leave the playfield, and if it would then add 180 degrees to the angle to turn the ball round back in to the playfield.
Urgghhh...
--
moto