Pascal - problem z warunkami

Witam, mam problem z warunkami w prostym programie obliczającym x i y w układach równań z macierzy, mianowicie nie działają warunki if, niby warunki są dobrze(przynajmniej tak mi się wydaję, a jednak program wyłącza się, gdy spełni się warunek, że układ jest sprzeczny, albo nieoznaczony. Przy oznaczonym podaje wynik, ale przy okazji dopisuje “Układ jest sprzeczny!”. Dlaczego tak się dzieje? Bardzo proszę o pomoc, zamieszczam poniżej kod programu.

program uklad_rownan;

uses crt;

var a1,a2,b1,b2,c1,c2,W,Wx,Wy:longint;

begin

clrscr;

writeln('Witaj w programie do rozwiazywania ukladow rownan w postaci A1x+B1x=C1 i analogicznie A2x+B2x=C2!');

writeln('Podaj A1: ');

read(a1);

writeln('Podaj B1: ');

read(b1);

writeln('Podaj C1: ');

read(c1);

writeln('Podaj A2: ');

read(a2);

writeln('Podaj B2: ');

read(b2);

writeln('Podaj C2: ');

read(c2);

W:=a1*b2-a2*b1;

Wx:=c1*c2-c2*b1;

Wy:=a1*c2-a2*c1;

if ((W=0) and (Wx<>0) or (Wy<>0)) then writeln('Uklad sprzeczny!');

if ((W=0) and (Wx=0) and (Wy=0)) then writeln('Uklad nieoznaczony!')

else writeln('Wykladnik glowny wynosi: ',W);

writeln('x= ',(c1*b2-c2*b1)/W:3:3);

writeln('y= ',(a1*c2-a2*c1)/W:3:3);

readln;

readln;

end.

warunek:

if ((W=0) and (Wx<>0) or (Wy<>0)) then writeln('Uklad sprzeczny!');

działa jak:

if ( ( (W=0) and (Wx<>0) ) or (Wy<>0)) then writeln('Uklad sprzeczny!');

jeżeli to nie to o co ci chodziło to postaw odpowiednio nawiasy.

Właśnie chodzi o to, że nie wiem jak je postawić, żeby te instrukcje zadziałały. Próbowałem już na wiele sposobów, ale żaden nie skutkuje.

Wg mnie powinno być:

if W=0 then

begin

  if (Wx<>0) or (Wy<>0) then writeln('Uklad sprzeczny!')

  else writeln('Uklad nieoznaczony!')

end

else 

begin

  writeln('Wykladnik glowny wynosi: ',W);

  writeln('x= ',Wx/W:3:3);

  writeln('y= ',Wy/W:3:3);

end;