anchor.diff:  	[{userdata, [{doc, "Reservation over multiple cents buckets"}]}].
   
   initial_multiple_buckets(_Config) ->
  -	ProdID = ocs:generate_password(),
   	PackagePrice = 100,
   	PackageSize = 1000,
  -	Price = #price{name = "overage", type = usage,
  -		units = octets, size = PackageSize, amount = PackagePrice},
  -	Product = #offer{name = ProdID, price = [Price], specification = 4},
  -	{ok, _} = ocs:add_offer(Product),
  -	SubscriberID = list_to_binary(ocs:generate_identity()),
  -	Timestamp = calendar:local_time(),
  -	Password = ocs:generate_password(),
  -	Chars = [{validity, erlang:system_time(?MILLISECOND) + 2592000000}],
  +	P1 = price(usage, octets, PackageSize, PackagePrice),
  +	OfferId = add_offer([P1], 4),
  +	ProdRef = add_product(OfferId),
  +	ServiceId =  add_service(ProdRef),
  +	B1 = bucket(cents, 50),
  +	_BId1 = add_bucket(ProdRef, B1),
  +	B2 = bucket(cents, 100),
  +	_BId2 = add_bucket(ProdRef, B2),
  +	B3 = bucket(cents, 75),
  +	_BId3 = add_bucket(ProdRef, B3),
  +	Balance1 = lists:sum([R || #bucket{remain_amount = R} <- [B1, B2, B3]]),
  +	Timestamp = calendar:local_time(),
  +	ServiceType = 2,
   	Reservation = 1111,
  -	B1 = #bucket{units = cents, remain_amount = 50,
  -		start_date = erlang:system_time(?MILLISECOND),
  -		termination_date = erlang:system_time(?MILLISECOND) + 2592000000},
  -	B2 = #bucket{units = cents, remain_amount = 100,
  -		start_date = erlang:system_time(?MILLISECOND),
  -		termination_date = erlang:system_time(?MILLISECOND) + 2592000000},
  -	B3 = #bucket{units = cents, remain_amount = 75,
  -		start_date = erlang:system_time(?MILLISECOND),
  -		termination_date = erlang:system_time(?MILLISECOND) + 2592000000},
  -	Buckets = [B1, B2, B3],
  -	Balance1 = lists:sum([R || #bucket{remain_amount = R} <- Buckets]),
  -	SessionId = [{'Session-Id', list_to_binary(ocs:generate_password())}],
  -	ServiceType = 2,
  -	{ok, _Subscriber1} = ocs:add_service(SubscriberID, Password, ProdID, Chars, Buckets),
  -	{ok, #service{buckets = RatedBuckets}, Reserved} =
  -			ocs_rating:rate(radius, ServiceType, SubscriberID, Timestamp,
  +	SessionId = [{'Session-Id', list_to_binary(ocs:generate_password())}],
  +	{ok, #service{}, Reserved} =
  +			ocs_rating:rate(radius, ServiceType, ServiceId, Timestamp,
   			undefined, undefined, initial, [], [{octets, Reservation}], SessionId),
  +	[#product{balance = BucketRefs}] = mnesia:dirty_read(product, ProdRef),
  +	RatedBuckets = lists:flatten([mnesia:dirty_read(bucket, Id) || Id <- BucketRefs]),
   	Balance2 = lists:sum([R || #bucket{remain_amount = R} <- RatedBuckets]),
   	F = fun(A) when (A rem PackageSize) == 0 ->
   			(A div PackageSize) * PackagePrice;
  
positive.code: 	RemAmount = 13,
  	B1 = bucket(cents, RemAmount),
  	BId = add_bucket(ProdRef, B1),
  	ProdID = ocs:generate_password(),
  	Timestamp = calendar:local_time(),
  	SessionId = [{'Session-Id', list_to_binary(ocs:generate_password())}],
  	ServiceType = 2,
  
negative.code: 	[{userdata, [{doc, "Reservation for voice call"}]}].
  
  reserve_voice(_Config) ->
  	DataAmount = 2,
  	DataSize = 1000000,
  	ReserveOctets = 1000000000,
  