anchor.diff:  	end,
   	ReserveAmount = case lists:keyfind(Units, 1, ReserveAmounts) of
   		{_, ReserveUnits} ->
  -			{Units, Amount} = get_reserve(Price),
  +			{Units, Amount} = get_reserve(#price{units = Units,
  +					char_value_use = PriceChars}),
   			{Units, ReserveUnits + Amount};
   		false ->
  -			get_reserve(Price)
  -	end,
  -	charge2(Service, ServiceId, Product, Buckets, Price, interim, DebitAmount, ReserveAmount,
  +			get_reserve(#price{units = Units,
  +					char_value_use = PriceChars})
  +	end,
  +	charge2(Service, ServiceId, Product, Buckets, PriceType,
  +			UnitSize, Units, Currency, UnitPrice, interim, DebitAmount, ReserveAmount,
   			SessionId, Rated, ChargingKey);
   charge1(_Protocol, Service, ServiceId, Product, Buckets,
  -		#price{units = Units, size = Size} = Price,
  +		PriceType, UnitSize, Units, Currency, UnitPrice, _PriceChars,
   		Flag, DebitAmounts, [], SessionId, Rated, ChargingKey)
   		when ((Flag == initial) or (Flag == interim)) ->
   	DebitAmount = case lists:keyfind(Units, 1, DebitAmounts) of
  
positive.code: 								case Amount of
  									N when N >= 0 ->
  										charge1(Protocol, Service, ServiceId, Product, Buckets,
  												Price#price{amount = N}, Flag, DebitAmounts, ReserveAmounts,
  												SessionId, Rated#rated{price_type = tariff,
  												description = Description1}, ChargingKey);
  									_N ->
  
negative.code: 	end.
  %% @hidden
  rate3(Protocol, Service, ServiceId, Product, Buckets, Address,
  		tariff = PriceType, UnitSize, Units, Currency, _UnitPrice, PriceChars,
  		Flag, DebitAmounts, ReserveAmounts, SessionId,
  		RoamingTable, Rated, ChargingKey, ServiceNetwork) ->
  	case lists:keyfind("destPrefixTariffTable", #char_value_use.name, PriceChars) of
  		#char_value_use{values = [#char_value{value = TariffTable}]}
  				when RoamingTable == undefined ->
  			Table = list_to_existing_atom(TariffTable),
  