anchor.diff:  end;
   
   
  +function TKMDeliveries.ValidOffer(oWT: TKMWareType; iO: Integer): Boolean;
  +begin
  +  Result := fOffer[oWT,iO].IsActive
  +            and (fOffer[oWT,iO].BeingPerformed < fOffer[oWT,iO].Count) // Offer isn't reserved already
  +            and not fOffer[oWT,iO].IsDeleted;
  +end;
  +
  +
   function TKMDeliveries.ValidDemand(dWT: TKMWareType; iD: Integer): Boolean;
   begin
     Result := fDemand[dWT,iD].IsActive
  -            and ((fDemand[dWT,iD].DemandType = dtAlways) or (fDemand[dWT,iD].BeingPerformed = 0))
  +            and ((fDemand[dWT,iD].DemandType = dtAlways) or (fDemand[dWT,iD].BeingPerformed = 0)) // Demand isn't reserved already
               and not fDemand[dWT,iD].IsDeleted;
   end;
   
   
   //IgnoreOffer means we don't check whether offer was already taken or deleted (used after offer was already claimed)
  -function TKMDeliveries.ValidDelivery(oWT, dWT: TKMWareType; iO, iD: Integer; aIgnoreOffer: Boolean = False): Boolean;
  +function TKMDeliveries.ValidDelivery(oWT, dWT: TKMWareType; iO, iD: Integer): Boolean;
   var
     I: Integer;
     B: TKMHouseBarracks;
  
positive.code: 
    // Conditions are called in the frequency of a negative Result: most negative first
  
    //If Demand and Offer aren't reserved already
    Result := (aIgnoreOffer or (offer.BeingPerformed < offer.Count));
  
    Result := Result and (
              ( //House-House delivery should be performed only if there's a connecting road
              (demand.Loc_House <> nil) and
              (gTerrain.RouteCanBeMade(offer.Loc_House.PointBelowEntrance, demand.Loc_House.PointBelowEntrance, tpWalkRoad))
  
negative.code:     procedure CloseDemand(aWare: TKMWareType; aID: Integer);
      procedure CloseOffer(aWare: TKMWareType; aID: Integer);
      function ValidWareTypePair(oWT, dWT: TKMWareType): Boolean; inline;
      function ValidOffer(oWT: TKMWareType; iO: Integer): Boolean; inline;
      function ValidDemand(dWT: TKMWareType; iD: Integer): Boolean; inline;
      function ValidDelivery(oWT, dWT: TKMWareType; iO, iD: Integer): Boolean;
      function SerfCanDoDelivery(oWT: TKMWareType; iO: Integer; aSerf: TKMUnitSerf): Boolean;
      function TryCalculateBid(aCalcKind: TKMDeliveryCalcKind; var aBidCost: TKMDeliveryBid; aSerf: TKMUnitSerf = nil): Boolean; overload;
      function TryCalculateBidBasic(aCalcKind: TKMDeliveryCalcKind; var aBidBasicCost: TKMDeliveryBid; aSerf: TKMUnitSerf = nil;
  