anchor.diff:      Exit;
     end;
   
  -  if TradeInProgress and (fMarketResIn[fResFrom] >= RatioFrom) then
  +  if TradeInProgress and (MarkerResToTrade[fResFrom] >= RatioFrom) then
     begin
       //How much can we trade
  -    TradeCount := Min((fMarketResIn[fResFrom] div RatioFrom), fTradeAmount);
  -
  -    Dec(fMarketResIn[fResFrom], TradeCount * RatioFrom);
  +    TradeCount := Min((MarkerResToTrade[fResFrom] div RatioFrom), fTradeAmount);
  +
  +    MarkerResToTrade[fResFrom] := MarkerResToTrade[fResFrom] - TradeCount * RatioFrom;
       gHands[fOwner].Stats.WareConsumed(fResFrom, TradeCount * RatioFrom);
       Dec(fTradeAmount, TradeCount);
       Inc(fMarketResOut[fResTo], TradeCount * RatioTo);
  
positive.code:   if fResFrom = fResTo then
      fResFrom := wt_None;
  end;
  
  
  function TKMHouseMarket.TradeInProgress: Boolean;
  
negative.code:     procedure AttemptExchange;
      procedure SetResFrom(aRes: TKMWareType);
      procedure SetResTo(aRes: TKMWareType);
  
      function GetMarkerResToTrade(aWare: TKMWareType): Word;
      procedure SetMarkerResToTrade(aWare: TKMWareType; aCnt: Word);
      property MarkerResToTrade[aWare: TKMWareType]: Word read GetMarkerResToTrade write SetMarkerResToTrade;
    protected
      function GetResOrder(aId: Byte): Integer; override;
      procedure SetResOrder(aId: Byte; aValue: Integer); override;
  