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: end;
  
  
  function TKMHouseMarket.TradeInProgress: Boolean;
  begin
    Result := fTradeAmount > 0;
  
negative.code:   //it looks bad that serfs remove the stone then take it back. To be converted to todo item.
  
    //How much do we need to ask to add to delivery system = Needed - (Ordered + Arrived)
    ResRequired := GetResRequired;
  
    if fTradeAmount <> 0 then
    begin
      movedOut2In := MoveResOut2In(fResFrom, ResRequired);
      if movedOut2In > 0 then
      begin
        //Remove demands, we took some of the wares from OUT queue
        OrdersRemoved := gHands[fOwner].Deliveries.Queue.TryRemoveDemand(Self, fResFrom, movedOut2In);
        Dec(fMarketDeliveryCount[fResFrom], OrdersRemoved);
      end;
    end;
  
    OrdersAllowed := MAX_RES_ORDERED - fMarketDeliveryCount[fResFrom];
  
    Assert(OrdersAllowed >= 0); //We must never have ordered more than we are allowed
  