Здравствуйте,
помогите разобраться,был уверен, что если переменной типа LONGINT присвоить выражение с переменными типа INTEGER, то результат будет в диапазоне допустимых значений типа LONGINT, вот пример где я запутался.
## Код:
```
MODULE Kern;
IMPORT L := StdLog;

PROCEDURE Do*;
VAR
   block,sector,number:   INTEGER;
   total:   LONGINT;
BEGIN

   L.Int(MAX(INTEGER)); L.Ln;
   L.Int(MAX(LONGINT)); L.Ln;

   block := 8; sector := 512; number := 10000000;
   total := block * sector * number;
   L.Int(total); L.Ln;
   
END Do;

BEGIN

CLOSE

END Kern.

Kern.Do

результат вывода в журнал :
2147483647 - это MAX(INTEGER)
9223372036854775807 - это MAX(LONGINT)
-1989672960 - а это как ведь должен же быть 40960000000 или total: LONGINT стал INTEGER ?
```


Что не так?