Mam taki o to kod:

function KatPrzeciecia(A1, A2, B1, B2: TPoint):Extended;
var k1,k2:extended;
begin // 2
k1:=ArcTan((A1.y-A2.y)/(A1.x-A2.x));
k2:=ArcTan((B1.y-B2.y)/(B1.x-B2.x));
result:=k2-k1;
end;

i

procedure TPoligon.MouseMove(Shift: TShiftState; X, Y: Integer);
var nkat:Extended;
    p:TPoint;
begin
if mdObrot then
   begin
   if not SKatE then
      begin
      p:=POINT(Po.x,Po.y+10);
      // 1
      skat:=KatPrzeciecia(POINT(X,Y),Po,Po,p); 
      SKatE:=true;
      end;
// [...]
end;

W punkcie 1 wartość zmiennej p wynosi np. (13,17), jednak w punkcie 2 parametr B2 zachowuje się tak jakby nie był zainicjowany (wartość losowa), a powinien być (13,17). Pierwsze 3 parametry zachowują się w porządku (są takie jakie miały być). Dodam jeszcze, że te dwie funkcje są w różnych unitach (chociaż to nie powinno mieć wpływu). Co robię źle?