¿Error de redondeo en Python con un número no impar?

Soy principiante en Python, y tengo una pregunta.
¿Por qué redondear un número como 5.5, 7.5, (cualquier cosa) .5 con la parte entera impar aplicando round(num) funciona correctamente (regla 5/4), pero redondeando el número como (cualquier cosa) .5 con la parte entera no impar por el ¿La misma función devuelve solo una parte entera? (Pero si agregamos un pequeño número como 0.000000001 a ese número decimal, funcionará correctamente)

Me refiero a la siguiente:

 round(9.5) 

devuelve 10, y es correcto. Pero

 round(8.5) 

devuelve 8, y no es correcto. Y

 round(8.5 + 0.0000000000001) 

devuelve 9.

¿Por qué funciona incorrectamente?
Yo uso Python 3.2.2 en Windows.

Python 3.x, a diferencia de Python 2.x, utiliza el redondeo de Banker para la función round() .

Este es el comportamiento documentado :

[I] f dos múltiplos están igualmente cerca, el redondeo se realiza hacia la opción par (por ejemplo, tanto la ronda (0.5) como la ronda (-0.5) son 0, y la ronda (1.5) es 2).

Dado que los números de punto flotante por su propia naturaleza son solo aproximaciones, no debería importar demasiado cómo se tratan los semi-enteros “exactos”; de todos modos, siempre podría haber errores de redondeo en los cálculos anteriores.

Editar : Para obtener el viejo comportamiento de redondeo, podría utilizar

 def my_round(x): return int(x + math.copysign(0.5, x))