anchor.diff:      ((1 shl 6) shl 8) or (6 shl 4),
       ((1 shl 7) shl 8) or (7 shl 4)
     );
  +  CLOCKWISE: array[Boolean] of Integer = (-1, +1);
   var
     ChildList: TChildList;
     Child: PWord;
  -  WayChild, i: Integer;
  -  N1, N2: Byte;
  +  WayChild, LineChild, Sign, i: Integer;
     S: string;
   
  -  procedure AddChild(C: Byte);
  -  begin
  -    Child^ := CHILD_VALUES[C];
  -    Inc(Child);
  +  procedure AddChild(C: Integer);
  +  begin
  +    C := (C + 8) and 7;
  +
  +    if (C <> LineChild) then
  +    begin
  +      Child^ := CHILD_VALUES[C];
  +      Inc(Child);
  +    end;
     end;
   
   begin
  
positive.code:           if (N = @FNodes.UnattainablePool.First) then CellKind := CellKind + ' [unattainable]'
            else
            CellKind := CellKind + ' [UNKNOWN!!!]';
  
            if (WayBits <> -1) then
              WayBits := WayBits and (not 7);
          end;
  
          // way (child list)
  
negative.code:   LookupLine(Format(FmtStr, Args));
  end;
  
  procedure AddChildArray(WayX, WayY: Integer; dXSmall, Finalize: Boolean);
  const
    CHILD_VALUES: array[0..7] of Word = (
      ((1 shl 0) shl 8) or (0 shl 4),
  