Я так понимаю, что поскольку унарного отрицания нет, а вычисления производятся на уровне INTEGER, то для присвоения необходимо использовать SHORT(). В ББ компилятор построже в этом плане, чем другие (XDS, Oberon, AOS).