Интересно, вот написал, "распространенных ошибок" вроде нет.
Интересно, есть ли ошибки?

## Код:
```
MODULE BinSearch; (** AUTHOR ""; PURPOSE ""; *)
IMPORT KernelLog;
PROCEDURE Search(x:LONGINT; a:ARRAY[*] OF LONGINT):LONGINT;
VAR
 n1,n2,i:LONGINT;
BEGIN
   n1:=0;
   n2:=LEN(a)-1;
   IF n2<0 THEN RETURN -1 END;
   i:=(n2-n1) DIV 2;
   WHILE (x#a[i])&(n1#n2) DO
      IF (x>a[i]) THEN
         IF (i#n1) THEN
            n1:=i;
         ELSE
            n1:=n2
         END;
      ELSE
         n2:=i;
      END;
      i:=(n2-n1) DIV 2+n1;
   END;
   IF (x=a[i]) THEN
      RETURN i;
   ELSE
      RETURN -1;
   END;
END Search;

PROCEDURE Test*;
BEGIN
KernelLog.String("Res= ");KernelLog.Int( Search(0,[0,1,2,3,4]), 0); KernelLog.Ln;
KernelLog.String("Res= ");KernelLog.Int( Search(1,[0,1,2,3,4]), 0); KernelLog.Ln;
KernelLog.String("Res= ");KernelLog.Int( Search(2,[0,1,2,3,4]), 0); KernelLog.Ln;
KernelLog.String("Res= ");KernelLog.Int( Search(3,[0,1,2,3,4]), 0); KernelLog.Ln;
KernelLog.String("Res= ");KernelLog.Int( Search(4,[0,1,2,3,4]), 0); KernelLog.Ln;
KernelLog.String("Res= ");KernelLog.Int( Search(5,[0,1,2,3,4]), 0); KernelLog.Ln;
KernelLog.String("Res= ");KernelLog.Int( Search(2,[1,2]), 0); KernelLog.Ln;
END Test;

END BinSearch.Test~
```
