anchor.diff:  %%
   all() ->
   	[radius_accounting, radius_disconnect_session,
  -	radius_multisession_disallowed, radius_multisession,
  -	diameter_scur, diameter_scur_cud,
  -	diameter_scur_no_credit, diameter_scur_depletion,
  -	diameter_ecur, diameter_ecur_no_credit,
  -	diameter_iec_cud, diameter_iec_dud,
  -	diameter_voice_out, diameter_voice_in,
  -	diameter_voice_out_tariff, diameter_voice_in_tariff,
  -	diameter_scur_no_credit, scur_start_redirect_server].
  +			radius_multisession_disallowed, radius_multisession,
  +			diameter_scur, diameter_scur_cud,
  +			diameter_scur_no_credit, diameter_scur_depletion,
  +			diameter_ecur, diameter_ecur_no_credit,
  +			diameter_iec_cud, diameter_iec_dud,
  +			diameter_voice_out, diameter_voice_in,
  +			diameter_voice_out_tariff, diameter_voice_in_tariff,
  +			diameter_scur_no_credit, scur_start_redirect_server,
  +			diameter_scur_price_descrimination_by_rg].
   
   %%---------------------------------------------------------------------
   %%  Test cases
  
positive.code: 			'CC-Request-Type' = ?'3GPP_CC-REQUEST-TYPE_TERMINATION_REQUEST',
  			'CC-Request-Number' = NewRequestNum} = Answer1.
  
  diamneter_scur_cud() ->
  	[{userdata, [{doc, "DIAMETER SCUR voice with Centralized Unit Determination"}]}].
  
  diameter_scur_cud(_Config) ->
  
negative.code: 			{'Redirect-Address-Type' = ?'3GPP_RO_REDIRECT-ADDRESS-TYPE_URL',
  			'Redirect-Server-Address' = CCARedirectServer}]}] = Fui.
  
  diameter_scur_price_descrimination_by_rg() ->
  	[{userdata, [{doc, "DIAMETER SCUR voice with Centralized Unit Determination"}]}].
  
  diameter_scur_price_descrimination_by_rg(_Config) ->
  	ServiceID = ocs:generate_identity(),
  	MSISDN = list_to_binary(ServiceID),
  	UnitSize1 = 1000000 + rand:uniform(10000),
  	P1 = price(usage, octets, UnitSize1, rand:uniform(1000000)),
  	OfferChar1 = [#char_value_use{name = "chargingKey", specification = "3",values = [#char_value{value = 100}]}],
  	OfferId1 = add_offer([P1], OfferChar1, 4),
  	ProdRef1 = add_product(OfferId1),
  	{ok, #service{}} = ocs:add_service(ServiceID, undefined, ProdRef1, []),
  	F1 = fun() ->
  			mnesia:write(product, #product{id = ProdRef1, service = [MSISDN]})
  	end,
  	mnesia:transaction(F1),
  	Balance1 = 1000000 + rand:uniform(1000000000),
  	B1 = bucket(octets, Balance1),
  	_BId1 = add_bucket(ProdRef1, B1),
  	UnitSize2 = 1000000 + rand:uniform(10000),
  	P2 = price(usage, octets, UnitSize2, rand:uniform(1000000)),
  	OfferChar2 = [#char_value_use{name = "chargingKey", specification = "3", values = [#char_value{value = 200}]}],
  	OfferId2 = add_offer([P2], OfferChar2, 4),
  	ProdRef2 = add_product(OfferId2, [MSISDN], []),
  	Balance2 = 1000000 + rand:uniform(1000000000),
  	B2 = bucket(octets, Balance2),
  	_BId2 = add_bucket(ProdRef2, B2),
  	Ref = erlang:ref_to_list(make_ref()),
  	SId = diameter:session_id(Ref),
  	SubscriptionId = #'3gpp_ro_Subscription-Id'{
  			'Subscription-Id-Type' = ?'3GPP_SUBSCRIPTION-ID-TYPE_END_USER_E164',
  			'Subscription-Id-Data' = MSISDN},
  	ServiceInformation = #'3gpp_ro_Service-Information'{'PS-Information' =
  			[#'3gpp_ro_PS-Information'{
  					'3GPP-PDP-Type' = [3],
  					'Serving-Node-Type' = [2],
  					'SGSN-Address' = [{10,1,2,3}],
  					'GGSN-Address' = [{10,4,5,6}],
  					'3GPP-IMSI-MCC-MNC' = [<<"001001">>],
  					'3GPP-GGSN-MCC-MNC' = [<<"001001">>],
  					'3GPP-SGSN-MCC-MNC' = [<<"001001">>]}]},
  	RequestNum1 = 0,
  	RequestedUnits1 = #'3gpp_ro_Requested-Service-Unit' {
  			'CC-Total-Octets' = [rand:uniform(Balance1 div 2)]},
  	RequestedUnits2 = #'3gpp_ro_Requested-Service-Unit' {
  			'CC-Total-Octets' = [rand:uniform(Balance2 div 2)]},
  	MSCC1 = #'3gpp_ro_Multiple-Services-Credit-Control'{
  			'Requested-Service-Unit' = [RequestedUnits1],
  			'Rating-Group' = [100]},
  	MSCC2 = #'3gpp_ro_Multiple-Services-Credit-Control'{
  			'Requested-Service-Unit' = [RequestedUnits2],
  			'Rating-Group' = [200]},
  	CCR1 = #'3gpp_ro_CCR'{'Session-Id' = SId,
  			'Auth-Application-Id' = ?RO_APPLICATION_ID,
  			'Service-Context-Id' = "32251@3gpp.org",
  			'User-Name' = [MSISDN],
  			'CC-Request-Type' = ?'3GPP_CC-REQUEST-TYPE_INITIAL_REQUEST',
  			'CC-Request-Number' = RequestNum1,
  			'Event-Timestamp' = [calendar:universal_time()],
  			'Subscription-Id' = [SubscriptionId],
  			'Multiple-Services-Credit-Control' = [MSCC1, MSCC2],
  			'Service-Information' = [ServiceInformation]},
  	{ok, Answer1} = diameter:call(?MODULE, cc_app_test, CCR1, []),
  	#'3gpp_ro_CCA'{'Result-Code' = ?'DIAMETER_BASE_RESULT-CODE_SUCCESS'} = Answer1,
  	RequestNum2 = RequestNum1 + 1,
  	UsedUnits1 = #'3gpp_ro_Requested-Service-Unit' {
  			'CC-Total-Octets' = [3000]},
  	UsedUnits2 = #'3gpp_ro_Requested-Service-Unit' {
  			'CC-Total-Octets' = [4000]},
  	RequestedUnits3 = #'3gpp_ro_Requested-Service-Unit' {
  			'CC-Total-Octets' = []},
  	MSCC3 = #'3gpp_ro_Multiple-Services-Credit-Control'{
  			'Requested-Service-Unit' = [RequestedUnits3], 'Used-Service-Unit' = [UsedUnits1],
  			'Rating-Group' = [100]},
  	MSCC4 = #'3gpp_ro_Multiple-Services-Credit-Control'{
  			'Requested-Service-Unit' = [RequestedUnits3], 'Used-Service-Unit' = [UsedUnits2],
  			'Rating-Group' = [200]},
  	CCR2 = #'3gpp_ro_CCR'{'Session-Id' = SId,
  			'Auth-Application-Id' = ?RO_APPLICATION_ID,
  			'Service-Context-Id' = "32251@3gpp.org",
  			'User-Name' = [MSISDN],
  			'CC-Request-Type' = ?'3GPP_CC-REQUEST-TYPE_UPDATE_REQUEST',
  			'CC-Request-Number' = RequestNum2,
  			'Event-Timestamp' = [calendar:universal_time()],
  			'Subscription-Id' = [SubscriptionId],
  			'Multiple-Services-Credit-Control' = [MSCC3, MSCC4],
  			'Service-Information' = [ServiceInformation]},
  	{ok, Answer2} = diameter:call(?MODULE, cc_app_test, CCR2, []),
  	#'3gpp_ro_CCA'{'Result-Code' = ?'DIAMETER_BASE_RESULT-CODE_SUCCESS'} = Answer2,
  	RequestNum3 = RequestNum2 + 1,
  	UsedUnits3 = #'3gpp_ro_Requested-Service-Unit' {
  			'CC-Total-Octets' = [5000]},
  	UsedUnits4 = #'3gpp_ro_Requested-Service-Unit' {
  			'CC-Total-Octets' = [6000]},
  	MSCC5 = #'3gpp_ro_Multiple-Services-Credit-Control'{
  			'Requested-Service-Unit' = [RequestedUnits3], 'Used-Service-Unit' = [UsedUnits3],
  			'Rating-Group' = [100]},
  	MSCC6 = #'3gpp_ro_Multiple-Services-Credit-Control'{
  			'Requested-Service-Unit' = [RequestedUnits3], 'Used-Service-Unit' = [UsedUnits4],
  			'Rating-Group' = [200]},
  	CCR3 = #'3gpp_ro_CCR'{'Session-Id' = SId,
  			'Auth-Application-Id' = ?RO_APPLICATION_ID,
  			'Service-Context-Id' = "32251@3gpp.org",
  			'User-Name' = [MSISDN],
  			'CC-Request-Type' = ?'3GPP_CC-REQUEST-TYPE_TERMINATION_REQUEST',
  			'CC-Request-Number' = RequestNum3,
  			'Event-Timestamp' = [calendar:universal_time()],
  			'Subscription-Id' = [SubscriptionId],
  			'Multiple-Services-Credit-Control' = [MSCC5, MSCC6],
  			'Service-Information' = [ServiceInformation]},
  	{ok, Answer3} = diameter:call(?MODULE, cc_app_test, CCR3, []),
  	#'3gpp_ro_CCA'{'Result-Code' = ?'DIAMETER_BASE_RESULT-CODE_SUCCESS'} = Answer3.
  
  %%---------------------------------------------------------------------
  %%  Internal functions
  %%---------------------------------------------------------------------
  
  authenticate_subscriber(Socket, Address,
  		Port, PeerID, Password, Secret, NasID, ReqAuth, RadID, AcctSessionID) ->
  	RadAttribute = radius_attributes:add(?UserPassword, Password, []),
  