anchor.diff:  		end,
   		case lists:foldl(F, [], Bundle) of
   			[#offer{} = Offer | _] ->
  -				authorize2(Protocol, ServiceType, Subscriber, Offer,
  +				authorize2(Protocol, ServiceType, Service, Buckets, Offer,
   						Timestamp, Address, Direction, SessionAttributes, Reserve);
   			[] ->
  -				authorize5(Subscriber, ServiceType, SessionAttributes, Attributes)
  +				authorize5(Service, Buckets, ServiceType, SessionAttributes, Attributes)
   		end
   	catch
   		_:_ ->
   			throw(invalid_bundle_product)
   	end;
   authorize2(radius = Protocol, ServiceType,
  -		#service{attributes = Attributes} = Subscriber,
  -		#offer{specification = ProdSpec, price = Prices},
  -		Timestamp, Address, Direction, SessionAttributes,
  -		Reserve) when (Reserve > 0)
  +		#service{attributes = Attributes} = Service, Buckets,
  +		#offer{specification = ProdSpec, price = Prices}, Timestamp,
  +		Address, Direction, SessionAttributes, Reserve) when (Reserve > 0)
   		and ((ProdSpec == "9") orelse (ProdSpec == "5")) ->
   	F = fun(#price{type = tariff, units = seconds}) ->
   				true;
  
positive.code: 		false ->
  			throw(undefined_tariff)
  	end;
  authorize3(Protocol, ServiceType, Subscriber, _Address,
  		Price, SessionAttributes, Reserve) ->
  	authorize4(Protocol, ServiceType, Subscriber,
  			Price, SessionAttributes, Reserve).
  %% @hidden
  authorize4(_Protocol, ServiceType, #service{buckets = Buckets1,
  		session_attributes = ExistingAttr, attributes = Attr} =
  		Subscriber, #price{units = Units, size = UnitSize, amount =
  		UnitPrice}, SessionAttributes, Reserve) ->
  	SessionId = get_session_id(SessionAttributes),
  	case reserve_session(Units, Reserve, SessionId, Buckets1) of
  		{Reserve, _Buckets2} ->
  			NewAttr = radius_attributes:store(?SessionTimeout, Reserve, Attr),
  			authorize5(Subscriber, ServiceType, SessionAttributes, NewAttr);
  		{UnitsReserved, Buckets2} ->
  			PriceReserveUnits = (Reserve- UnitsReserved),
  			{UnitReserve, PriceReserve} = price_units(PriceReserveUnits,
  
negative.code: 	FilteredPrices2 = filter_prices_tod(Timestamp, FilteredPrices1),
  	case filter_prices_dir(Direction, FilteredPrices2) of
  		[Price | _] ->
  			authorize3(Protocol, ServiceType, Service, Buckets, Address,
  					Price, SessionAttributes, Reserve);
  		_ ->
  			authorize5(Service, Buckets, ServiceType, SessionAttributes, Attributes)
  	end;
  authorize2(radius = Protocol, ServiceType,
  		#service{attributes = Attributes} = Service, Buckets,
  		#offer{specification = ProdSpec, price = Prices}, Timestamp,
  		_Address, _Direction, SessionAttributes, Reserve) when (Reserve > 0)
  		and ((ProdSpec == "8") orelse (ProdSpec == "4")) ->
  	F = fun(#price{type = usage, units = seconds}) ->
  				true;
  