anchor.diff:  	case filter_prices_tod(Timestamp, FilteredPrices1) of
   		[Price | _] ->
   			authorize4(Protocol, ServiceType, Service,
  -					Buckets, Price, SessionAttributes, Reserve);
  +					Buckets, Price, SessionAttributes, Reserve, ReserveUnits);
   		_ ->
   			authorize5(Service, Buckets, ServiceType, SessionAttributes, Attributes)
   	end;
   authorize2(_Protocol, ServiceType,
  -		#service{attributes = Attributes} = Service, Buckets, _Offer,
  -		_Timestamp, _Address, _Direction, SessionAttributes, _Reserve) ->
  +		#service{attributes = Attributes} = Service, Buckets, _Offer, _Timestamp,
  +		_Address, _Direction, SessionAttributes, _Reserve, _ReserveUnits) ->
   	authorize5(Service, Buckets, ServiceType, SessionAttributes, Attributes).
   %% @hidden
   authorize3(Protocol, ServiceType, Service, Buckets, Address,
   		#price{type = tariff, char_value_use = CharValueUse} = Price,
  -		SessionAttributes, Reserve) ->
  +		SessionAttributes, Reserve, ReserveUnits) ->
   	case lists:keyfind("destPrefixTariffTable", #char_value_use.name, CharValueUse) of
   		#char_value_use{values = [#char_value{value = TariffTable}]} ->
   			Table = list_to_existing_atom(TariffTable),
  
positive.code: 					case Amount of
  						N when N >= 0 ->
  							authorize4(Protocol, ServiceType, Service, Buckets,
  								Price#price{amount = N}, SessionAttributes, Reserve);
  						_N ->
  							mnesia:abort(negative_amount)
  					end;
  				Other ->
  					mnesia:abort(table_lookup_failed)
  			end;
  		false ->
  			mnesia:abort(undefined_tariff)
  	end;
  authorize3(Protocol, ServiceType, Service,
  		Buckets, _Address, Price, SessionAttributes, Reserve) ->
  	authorize4(Protocol, ServiceType, Service,
  			Buckets, Price, SessionAttributes, Reserve).
  %% @hidden
  authorize4(_Protocol, ServiceType,
  		#service{session_attributes = ExistingAttr, attributes = Attr} = Service,
  		Buckets, #price{units = Units, size = UnitSize, amount = UnitPrice},
  		SessionAttributes, Reserve) ->
  	SessionId = get_session_id(SessionAttributes),
  	case update_session(Units, 0, Reserve,
  			undefined, undefined, SessionId, Buckets) of
  		{0, Reserve, _Buckets2} ->
  			NewAttr = radius_attributes:store(?SessionTimeout, Reserve, Attr),
  			authorize5(Service, Buckets, ServiceType, SessionAttributes, NewAttr);
  		{0, UnitsReserved, Buckets2} ->
  			PriceReserveUnits = (Reserve- UnitsReserved),
  			{UnitReserve, PriceReserve} = price_units(PriceReserveUnits,
  
negative.code: authorize2(radius = Protocol, ServiceType,
  		#service{attributes = Attributes} = Service, Buckets, Timestamp,
  		#offer{specification = undefined, bundle = Bundle}, Address, Direction,
  		SessionAttributes, Reserve, ReserveUnits) when Reserve > 0, Bundle /= [] ->
  	try
  		F = fun(#bundled_po{name = OfferId}, Acc) ->
  				case mnesia:read(offer, OfferId, read) of
  