edición general
  1. Una vez en un programa vi algo parecido a esto:

    X := (X + 1) MOD TOPE

    X va tomando valores desde 0 hasta TOPE-1 y vuelve otra vez a 0. Te evitas hacer un IF

    Ya tengo la solución para que vaya en sentido contrario:

    X := TOPE - (((TOPE - X) MOD TOPE) + 1)

menéame