Acabo de revisar el efecto que indicas en Proteus.
La verdad es que no se porque realiza eso.
Simulandolo con Flowcode, si bajas un poco la velocidad de ejecucion, por ejemplo a 50Hz, puedes añadir la variable a visualizar en este caso "duty". Vas a comprobar que siempre que alcanza el valor que pongas en el bloque de decision, el valor vuelve a 0 y por tanto no se porque Proteus vuelve a empezar, durante un rato a esos valores que no corresponden con la realidad.
F.