Есть два варианта процедур, возвращающих младшее слово от двойного слова. Но одна из них сбоит, а другая - нет, хотя разницы не вижу.
## Код:
```
(*   (* рабочая версия *)
   PROCEDURE IntLow (a: LONGINT): INTEGER;
      VAR x: LONGINT;
   BEGIN
      x := a MOD 100000000L;
      RETURN SHORT(x)
   END IntLow;*)

   (* НЕрабочая версия *)
   PROCEDURE IntLow (a: LONGINT): INTEGER;
   BEGIN
      RETURN SHORT(a MOD 100000000L)
   END IntLow;

   PROCEDURE Test*;
      VAR y, z: LONGINT; x: INTEGER;
   BEGIN
      (* TEST PASSED *)
      z := 7FFFFFFF7FFFFFFFL; (* MAX(LONGINT) - MAX(INTEGER) - 1 *)
      x := IntLow(z);
      
      (* TEST FAILED *)
      z := 7FFFFFFF80000000L; (* MAX(LONGINT) - MAX(INTEGER) *)
      x := IntLow(z);
   END Test;
```
