Потому, что в программировании остаток от деления всегда вычисляется по формуле:
x mod y = x - (x div y) * y
И для отрицательных чисел результат этой формулы отличается от принятого в школьной математики.
Более того, для отрицательных чисел результат в разных языках тоже будет отличаться, т.к. в них используются разные способы целочисленного деления отрицательных чисел.
В Pascal в целочисленном делении используется округление к 0: производим вещественное деление и отбрасываем дробную часть частного.
А в Python используется округление к -∞: производим вещественное деление и округляем частное вниз - к ближайшему целому, не превосходящему частное.
Для пояснения:
|------|7 div 5|-7 div 5|7 div -5|-7 div -5|
|pascal| 1 | -1 | -1 | 1 |
|python| 1 | -2 | -2 | 1 |
|------|7 mod 5|-7 mod 5|7 mod -5|-7 mod -5|
|pascal| 2 | -2 | 2 | -2 |
|python| 2 | 3 | -3 | -2 |