anchor.diff:      BuildID: Integer;
       HouseNeedsWorker: Boolean;
       HouseReadyToBuild: Boolean;
  -    Step: Byte;
  -    Cells: array[1..4*4]of TKMPoint;
  +    CellsToDig: array [0..15] of TKMPoint; //max house square is 4*4
  +    LastToDig: ShortInt;
       function GetHouseEntranceLoc: TKMPoint;
     public
       constructor Create(aWorker: TKMUnitWorker; aHouseType: THouseType; aLoc: TKMPoint; aID:integer);
  
positive.code:   SaveStream.Write(BuildID);
    SaveStream.Write(HouseNeedsWorker);
    SaveStream.Write(HouseReadyToBuild);
    SaveStream.Write(Step);
    for i:=1 to length(Cells) do
    SaveStream.Write(Cells[i]);
  end;
  
  
  
negative.code:         end;
      4:  begin
            SetActionLockedStay(11,ua_Work1,false);
            gTerrain.FlattenTerrain(CellsToDig[LastToDig]);
          end;
      5:  begin
            SetActionLockedStay(11,ua_Work1,false);
            gTerrain.FlattenTerrain(CellsToDig[LastToDig]);
          end;
      6:  begin
            SetActionLockedStay(11,ua_Work1,false);
            gTerrain.FlattenTerrain(CellsToDig[LastToDig]);
            gTerrain.FlattenTerrain(CellsToDig[LastToDig]); //Flatten the terrain twice now to ensure it really is flat
            gTerrain.SetTileLock(CellsToDig[LastToDig], tlDigged); //Block passability on tile
            if KMSamePoint(fHouse.GetEntrance, CellsToDig[LastToDig]) then
              gTerrain.SetField(fHouse.GetEntrance, Owner, ft_Road);
            gTerrain.RemoveObject(CellsToDig[LastToDig]); //All objects are removed
            Dec(LastToDig);
          end;
      7:  begin
            //Walk away from building site, before we get trapped when house becomes stoned
  