anchor.diff:      else
         CloseOffer(iO);
   
  -//  UpdateQueueItem(aID);
  +  UpdateQueueItem(aID);
     UpdateOfferItem(iO);
   end;
   
  
positive.code:                                                out aToHouse: TKMHouse; out aToUnit: TKMUnit; out aForceDelivery: Boolean);
  
    function ValidBestDemand(iD: Integer): Boolean;
    begin
      Result := (fDemand[iD].Ware = aResource) or
                ((fDemand[iD].Ware = wtWarfare) and (aResource in [WARFARE_MIN..WARFARE_MAX])) or
  
negative.code: 
      //If Demand aren't reserved already
      Result := Result and ((fDemand[iD].DemandType = dtAlways) or (fDemand[iD].BeingPerformed = 0));
  
      //For constructing houses check if they are connected with road to some other houses,
      //which can produce demanded ware (stone or wood)
      if Result
        and (fDemand[iD].Loc_House <> nil)
        and not fDemand[iD].Loc_House.IsComplete
        and not fDemand[iD].Loc_House.IsDestroyed then
        for I := 0 to gHands[fDemand[iD].Loc_House.Owner].Houses.Count - 1 do
        begin
          H := gHands[fDemand[iD].Loc_House.Owner].Houses[I];
          if H.IsComplete
            and not H.IsDestroyed
            and (H.ResCanAddToOut(fDemand[iD].Ware) //Check both - output and input ware, because we could use in theory takeout delivery...
              or H.ResCanAddToIn(fDemand[iD].Ware)) then
            Result := Result and gTerrain.Route_CanBeMade(H.PointBelowEntrance, fDemand[iD].Loc_House.PointBelowEntrance, tpWalkRoad, 0);
        end;
    end;
  
    function FindBestDemandId(): Integer;
  