anchor.diff:    // 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))
  -             and ((demand.DemandType = dtAlways) or (demand.BeingPerformed = 0));
  +  Result := (aIgnoreOffer or (offer.BeingPerformed < offer.Count));
   
     Result := Result and (
               ( //House-House delivery should be performed only if there's a connecting road
  
positive.code:                           or (not demand.Loc_House.ShouldAbandonDeliveryTo(aWare)
                               and (demand.Loc_House <> oldDemand^.Loc_House)));
  
      //If Demand aren't reserved already
      Result := Result and ((demand.DemandType = dtAlways) or (demand.BeingPerformed = 0));
  
      //For constructing houses check if they are connected with road to some other houses,
      //which can produce demanded ware (stone or wood)
  
negative.code:             begin
                offersTaken := 0;
                for iD := 0 to fDemandCount[dWT] - 1 do
                  if ValidDemand(dWT, iD) and not demandTaken[dWT,iD] and ValidDelivery(oWT,dWT,iO,iD) then
                  begin
                    if fDemand[dWT,iD].DemandType = dtOnce then
                    begin
  