anchor.diff:  		termination_date = erlang:system_time(?MILLISECOND) + 2592000000}],
   	Destination = ocs:generate_identity(),
   	{ok, _} = ocs:add_subscriber(SubscriberID, Password, ProdID, Chars, Buckets),
  -	{ok, _, _} = ocs_rating:rate(diameter, SubscriberID, Destination, interim, [], [{octets, Reservation}]),
  +	SessionId = [{'Session-Id', list_to_binary(ocs:generate_password())}],
  +	{ok, _, _} = ocs_rating:rate(diameter, SubscriberID, Destination, initial, [], [{octets, Reservation}], SessionId),
   	{ok, #subscriber{buckets = RatedBuckets}} = ocs:find_subscriber(SubscriberID),
   	false = lists:keyfind(cents, #bucket.units, RatedBuckets),
   	#bucket{remain_amount = PackageSize} = lists:keyfind(octets, #bucket.units, RatedBuckets).
  
positive.code: 		termination_date = erlang:system_time(?MILLISECOND) + 2592000000}],
  	Destination = ocs:generate_identity(),
  	{ok, _} = ocs:add_subscriber(SubscriberID, Password, ProdID, Chars, Buckets),
  	%% 1st Reservation
  	{ok, _, _} = ocs_rating:rate(diameter, SubscriberID, Destination, interim, [], [{octets, Reservation}]),
  	{ok, #subscriber{buckets = RatedBuckets}} = ocs:find_subscriber(SubscriberID),
  	#bucket{remain_amount = CentsRemain} = lists:keyfind(cents, #bucket.units, RatedBuckets),
  	CentsRemain = RemAmount - PackagePrice,
  	#bucket{remain_amount = PackageSize} = lists:keyfind(octets, #bucket.units, RatedBuckets),
  	%% 2nd Reservation
  	Reservation2 = 300,
  	{ok, _, _} = ocs_rating:rate(diameter, SubscriberID, Destination, interim, [], [{octets, Reservation2}]),
  	{ok, #subscriber{buckets = RatedBuckets}} = ocs:find_subscriber(SubscriberID),
  	#bucket{remain_amount = CentsRemain} = lists:keyfind(cents, #bucket.units, RatedBuckets),
  	CentsRemain = RemAmount - PackagePrice,
  	#bucket{remain_amount = PackageSize} = lists:keyfind(octets, #bucket.units, RatedBuckets),
  	%% 3rd Reservation
  	Reservation3 = 700,
  	{ok, _, _} = ocs_rating:rate(diameter, SubscriberID, Destination, interim, [], [{octets, Reservation3}]),
  	{ok, #subscriber{buckets = RatedBuckets}} = ocs:find_subscriber(SubscriberID),
  	#bucket{remain_amount = CentsRemain} = lists:keyfind(cents, #bucket.units, RatedBuckets),
  	CentsRemain = RemAmount - PackagePrice,
  
negative.code: 		termination_date = erlang:system_time(?MILLISECOND) + 2592000000}],
  	{ok, _} = ocs:add_subscriber(SubscriberID, Password, ProdID, Chars, Buckets),
  	Destination = ocs:generate_identity(),
  	SessionId = [{'Session-Id', list_to_binary(ocs:generate_password())}],
  	{out_of_credit, _} = ocs_rating:rate(diameter, SubscriberID, Destination, initial, [], [], SessionId),
  	{out_of_credit, _} = ocs_rating:rate(diameter, SubscriberID, Destination, interim, [{octets, Debit}], [{octets, Reservation}], SessionId),
  	{ok, #subscriber{buckets = []}} = ocs:find_subscriber(SubscriberID).
  
  %%---------------------------------------------------------------------
  