anchor.diff:      begin
         MaxIdx := WOOD_SHORTAGE_IDX;
         MinIdx := TRUNK_SHORTAGE_IDX;
  -      if (gHands[fOwner].Stats.GetHouseTotal(htWoodcutters) > 0) then
  +      if (fPlanner.PlannedHouses[htSawmill].Completed > 0) then
           MinIdx := WOOD_SHORTAGE_IDX;
       end
       else if fTrunkShortage then
  
positive.code: 
  
  procedure TKMCityBuilder.UpdateState(aTick: Cardinal; out aFreeWorkersCnt: Integer);
  begin
    if (aTick mod MAX_HANDS = fOwner) then
    begin
      fPlanner.UpdateState(aTick); // Planner must be updated as first to secure that completed houses are actualized
      UpdateBuildNodes(aFreeWorkersCnt);
    end;
  end;
  
  
negative.code:     procedure UnlockPointOfNode(aPoint: TKMPoint; aCheckHousePlan: Boolean = False);
      procedure UnlockNode(var aNode: TBuildNode; aCheckHousePlan: Boolean = False);
  
      procedure CheckBasicMaterials(var aFreeWorkersCnt, aMaxPlans, aMaxPlace: Integer; var aTrunkBalance: Single; aTick: Cardinal);
      procedure CreateShortcuts();
    public
      constructor Create(aPlayer: TKMHandIndex; aPredictor: TKMCityPredictor);
  