anchor.diff:  begin
     if not WRITE_WALKTO_LOG then Exit;
   
  -  ExplanationLog := TStringList.Create;
  +  fExplanationLog := TStringList.Create;
     if FileExists(ExeDir+'ExpLog'+inttostr(fUnit.UID)+'.txt') then
  -    ExplanationLog.LoadFromFile(ExeDir+'ExpLog'+inttostr(fUnit.UID)+'.txt');
  +    fExplanationLog.LoadFromFile(ExeDir+'ExpLog'+inttostr(fUnit.UID)+'.txt');
   end;
   
   
  
positive.code: 
    if WRITE_WALKTO_LOG then
    begin
      Explanation := 'WalkTo destroyed at'+floattostr(fUnit.PositionF.X)+':'+floattostr(fUnit.PositionF.Y);
      ExplanationLogAdd;
      ExplanationLog.SaveToFile(ExeDir+'ExpLog'+inttostr(fUnit.UID)+'.txt');
    end;
  
    FreeAndNil(ExplanationLog);
    FreeAndNil(NodeList);
  
    if not KMSamePoint(fVertexOccupied, KMPOINT_ZERO) then
      DecVertex;
  
negative.code:   //.x
    // .
  
    if (fNodePos+2 <= fNodeList.Count-1) then
    begin
      A := fNodeList[fNodePos];
      B := fNodeList[fNodePos+1];
      C := fNodeList[fNodePos+2];
  
      if (A.X = C.X) and (Abs(A.Y - C.Y) = 2) //We are headed in straight line
      and (A.X <> B.X) then //Next step is diagonal
        candidate := KMPoint(A.X, B.Y)
      else
        if (A.Y = C.Y) and (Abs(A.X - C.X) = 2) //We are headed in straight line
        and (A.Y <> B.Y) then //Next step is diagonal
          candidate := KMPoint(B.X, A.Y)
        else
          Exit;
  
      //Check if candidate is walkable and doesn't have a unit
      if (fPass in gTerrain.Land^[candidate.Y, candidate.X].Passability)
      and not gTerrain.HasUnit(candidate) then
      begin
        //Candidate is better, so update route
        fNodeList[fNodePos+1] := candidate;
      end;
    end;
  end;
  