anchor.diff:   if (Self.VyhSettings.spojka > -1) then
     begin
      // pokud se jedna o spojku, volame SetPoloha i na spojku
  -   Blky.GetBlkByID(Self.VyhSettings.spojka, Blk);
  -   if ((Blk <> nil) and (Blk.typ = _BLK_VYH) and
  -   (((Blk as TBlkVyhybka).Stav.staveni_plus <> Self.VyhStav.staveni_plus) or ((Blk as TBlkVyhybka).Stav.staveni_minus <> Self.VyhStav.staveni_minus))) then
  -     (Blk as TBlkVyhybka).SetPoloha(new, zamek, nouz);
  +   if ((spojka <> nil) and (spojka.typ = _BLK_VYH) and
  +       ((spojka.Stav.staveni_plus <> Self.VyhStav.staveni_plus) or (spojka.Stav.staveni_minus <> Self.VyhStav.staveni_minus))) then
  +     spojka.SetPoloha(new, zamek, nouz);
     end;
   
    Result := 0;
  
positive.code:   end;
  
   if ((Self.Zaver = TZaver.no) and (not Self.vyhZaver) and (Self.VyhStav.locked) and (Self.VyhStav.redukce_menu = 0) and
     ((Self.zamek = nil) or ((Self.zamek as TBlkZamek).klicUvolnen))) then
    begin
     Self.Unlock();
     changed := true;
  
negative.code: ////////////////////////////////////////////////////////////////////////////////
  
  function TBlkVyhybka.SetPoloha(new:TVyhPoloha; zamek:boolean = false; nouz:boolean = false; callback_ok:TNotifyEvent = nil; callback_err:TNotifyEvent = nil):Integer;
  var spojka:TBlkVyhybka;
      oblr:TOR;
  begin
    if (not GetFunctions.GetSystemStart) then Exit(1);
    if (Self.VyhSettings.RCSAddrs.Count < 4) then Exit(2);
    if ((new <> plus) and (new <> minus)) then Exit(3);
  
    // V tomto momente je klicove ziskat aktualni polohu vyhybky, jinak by mohlo dojit
    // k zacykleni pri staveni spojek.
    Self.UpdatePoloha();
    Blky.GetBlkByID(Self.VyhSettings.spojka, TBlk(spojka));
  
    if (new <> Self.VyhStav.poloha) then
     begin
  