anchor.diff:    for HT := HOUSE_MIN to HOUSE_MAX do
     begin
       LoadStream.Read(fPlannedHouses[HT].Count);
  -    LoadStream.Read(fPlannedHouses[HT].Calculated);
  +    LoadStream.Read(fPlannedHouses[HT].Completed);
  +    LoadStream.Read(fPlannedHouses[HT].UnderConstruction);
       LoadStream.Read(Len);
       SetLength(fPlannedHouses[HT].Plans, Len);
       for I := 0 to fPlannedHouses[HT].Count - 1 do
  
positive.code:     Loc, SpecPoint: TKMPoint;
    end;
    THousePlanArray = record
      Count, Calculated: Word;
      Plans: array of THousePlan;
    end;
    TPlannedHousesArray = array [HOUSE_MIN..HOUSE_MAX] of THousePlanArray;
  
negative.code:       if not (HT in [htWatchTower, htWoodcutters, htCoalMine, htIronMine, htGoldMine])
          AND not (HT in HOUSE_DEPENDENCE[aHT]) then
          for I := fPlannedHouses[HT].Count - 1 downto 0 do
            if (HouseCnt = 0) OR (KaMRandom() < PROBABILITY) then
            begin
              if (HouseCnt >= MAX_RND_HOUSES) then
                break;
  