This is not a bug, this is the way the program works.
When you do an overlapping condition, only the coordinates of the first object are the most recent ones. The coordinates of the second object must be updated by a screen refresh to be taken into acount at their new position.
So in your first frame, you change the coordinate of the first object twenty times, but the coordinates of the second object in the overlapping condition never change, except from one frame to another. This is why your objects only move at 50 fps.
I do not think there is a way we can modify this, so you will have to find a way around it, like you have done in the second frame.
_________________________
Francois