anchor.diff:    begin
       X := aStartX;
       Y := aStartY;
  -    nextStep := sdNone;
  +    NextStep := sdNone;
   
       SetLength(aOutlines.Shape, aOutlines.Count + 1);
       aOutlines.Shape[aOutlines.Count].Count := 0;
  
positive.code: type
    TStepDirection = (sdNone, sdUp, sdRight, sdDown, sdLeft);
  var
    PrevStep, NextStep: TStepDirection;
    SizeX, SizeY: Word;
  
    procedure Step(X,Y: SmallInt);
  
negative.code: 
      //Where do we go from here
      case State of
        1:  NextStep := sdUp;
        2:  NextStep := sdRight;
        3:  NextStep := sdRight;
        4:  NextStep := sdLeft;
        5:  NextStep := sdUp;
        6:  if (PrevStep = sdUp) then
              NextStep := sdLeft
            else
              NextStep := sdRight;
        7:  NextStep := sdRight;
        8:  NextStep := sdDown;
        9:  if (PrevStep = sdRight) then
              NextStep := sdUp
            else
              NextStep := sdDown;
        10: NextStep := sdDown;
        11: NextStep := sdDown;
        12: NextStep := sdLeft;
        13: NextStep := sdUp;
        14: NextStep := sdLeft;
        else NextStep := sdNone;
      end;
    end;
  
  