Okay the redirect plan is out of the window because the mathematical precision isn't good enough and we get into infinite redirect loops... Back to plan A which is to calculate a standard bottom left.
20.5 * 0.2 = 4.10000000000000005
No it ruddy doesn't it is 4.1
20.5 / 5 = 4.0999999999999996
Java is just as bad at this so its not a Python fault (although with Java at least its consistently bad, Python is inconsitently bad as it just defaults to the C implementation on the box).