anchor.diff:    AttemptExchange;
   
     //If player cancelled exchange then move all remainders of From resource to Offers list
  -  if (fTradeAmount = 0) and (fMarketResIn[fResFrom] > 0) then
  -  begin
  -    //No need to call SetRes functins here, since its just moving resource from In to Out
  -    Inc(fMarketResOut[fResFrom], fMarketResIn[fResFrom]);
  -    gHands[fOwner].Deliveries.Queue.AddOffer(Self, fResFrom, fMarketResIn[fResFrom]);
  -    fMarketResIn[fResFrom] := 0;
  -  end;
  +  if fTradeAmount = 0 then
  +    MoveResIn2Out(fResFrom, fMarketResIn[fResFrom]);
   
     //@Lewin: If player has cancelled the exchange and then started it again resources will not be
     //removed from offers list and perhaps serf will carry them off the marketplace
  
positive.code:     function GetResToTrade(aWare: TKMWareType): Word;
      procedure SetResToTrade(aWare: TKMWareType; aCnt: Word);
      property ResToTrade[aWare: TKMWareType]: Word read GetResToTrade write SetResToTrade;
    protected
      function GetResOrder(aId: Byte): Integer; override;
      procedure SetResOrder(aId: Byte; aValue: Integer); override;
  
negative.code:   //Maximum number of Demands we can place at once (stops the delivery queue from becoming clogged with 1500 items)
    MAX_RES_ORDERED = 10;
  var
    ResRequired, OrdersAllowed, OrdersRemoved, OrderToDo, movedOut2In: Integer;
  begin
    if (fResFrom = wtNone) or (fResTo = wtNone) or (fResFrom = fResTo) then Exit;
  
  