anchor.diff:  		'CC-Input-Octets' = [CCInputOctets]}]} = MSCC| T], SCID, SI, Acc)
   		when is_integer(CCInputOctets), is_integer(CCOutputOctets),
   		CCInputOctets > 0, CCOutputOctets > 0 ->
  +	RequestedUnits = {"requestedUnit", {struct, [{"uplinkVolume", CCInputOctets},
  +			{"downlinkVolume", CCOutputOctets}]}},
   	Parameters = lists:flatten([SCID, get_si(MSCC), get_rg(MSCC), SI,
  -			{"uplinkVolume", CCInputOctets}, {"downlinkVolume", CCOutputOctets},
  -			{"requestSubType", "RESERVE"}]),
  +			RequestedUnits, {"requestSubType", "RESERVE"}]),
   	service_rating1(T, SCID, SI, [{struct, Parameters} | Acc]);
   service_rating1([#'3gpp_ro_Multiple-Services-Credit-Control'{
   		'Requested-Service-Unit' = [#'3gpp_ro_Requested-Service-Unit'{
   		'CC-Service-Specific-Units' = [CCSpecUnits]}]} = MSCC | T],
   		SCID, SI, Acc) when is_integer(CCSpecUnits), CCSpecUnits > 0 ->
  +	RequestedUnits = {"requestedUnit", {struct, [{"serviceSpecificUnit", CCSpecUnits}]}},
   	Parameters = lists:flatten([SCID, get_si(MSCC), get_rg(MSCC), SI,
  -			{"serviceSpecificUnit", CCSpecUnits},
  -			{"requestSubType", "RESERVE"}]),
  +			RequestedUnits, {"requestSubType", "RESERVE"}]),
   	service_rating1(T, SCID, SI, [{struct, Parameters} | Acc]);
   service_rating1([#'3gpp_ro_Multiple-Services-Credit-Control'{
   		'Requested-Service-Unit' = [#'3gpp_ro_Requested-Service-Unit'{}]}
  
positive.code: %% @doc POST rating data to a Nrf Rating Server.
  post_request({MSISDN, IMSI}, SvcContextId, TimeStamp, ServiceType,
  		SessionId, MSCC, Location, intial) ->
  	{_, NrfUri} = application:get_env(ocs, nrf_uri),
  	{ok, NrfUri} = application:get_env(nrf_uri),
  	Path = NrfUri ++ ?BASE_URI,
  	post_request1({MSISDN, IMSI}, SvcContextId, TimeStamp, ServiceType,
  			SessionId, MSCC, Location, Path);
  post_request({MSISDN, IMSI}, SvcContextId, TimeStamp, ServiceType,
  		SessionId, MSCC, Location, interim) ->
  	{_, NrfUri} = application:get_env(ocs, nrf_uri),
  	Path = NrfUri ++ ?BASE_URI ++ "/" ++
  			get_ref(SessionId) ++ "/" ++ "update",
  	post_request1({MSISDN, IMSI}, SvcContextId, TimeStamp, ServiceType,
  			SessionId, MSCC, Location, Path);
  post_request({MSISDN, IMSI}, SvcContextId, TimeStamp, ServiceType,
  		SessionId, MSCC, Location, final) ->
  	{_, NrfUri} = application:get_env(ocs, nrf_uri),
  	Path = NrfUri ++ ?BASE_URI ++ "/" ++
  			get_ref(SessionId) ++ "/" ++ "release",
  	post_request1({MSISDN, IMSI}, SvcContextId, TimeStamp, ServiceType,
  			SessionId, MSCC, Location, Path).
  post_request1({MSISDN, IMSI}, SvcContextId, TimeStamp, ServiceType,
  		SessionId, MSCC, Location, Path) ->
  	{ok, Profile} = application:get_env(nrf_profile),
  
negative.code: 		'CC-Input-Octets' = [UplinkVolume]}]} = MSCC | T], SCID, SI, Acc)
  		when is_integer(UplinkVolume), is_integer(DownlinkVolume),
  		UplinkVolume > 0, DownlinkVolume > 0 ->
  	ConsumedUnits = {"consumedUnit", {struct, [{"uplinkVolume", UplinkVolume},
  			{"downlinkVolume", DownlinkVolume}]}},
  	Parameters = lists:flatten([SCID, get_si(MSCC), get_rg(MSCC), SI,
  			ConsumedUnits, {"requestSubType", "DEBIT"}]),
  	service_rating1(T, SCID, SI, [{struct, Parameters} | Acc]);
  service_rating1([#'3gpp_ro_Multiple-Services-Credit-Control'{
  		'Used-Service-Unit' = [#'3gpp_ro_Used-Service-Unit'{
  		'CC-Service-Specific-Units' = [CCSpecUnits]}]} = MSCC | T], SCID, SI, Acc)
  		when is_integer(CCSpecUnits), CCSpecUnits > 0 ->
  	ConsumedUnits = {"consumedUnit", {struct, [{"serviceSpecificUnit", CCSpecUnits}]}},
  	Parameters = lists:flatten([SCID, get_si(MSCC), get_rg(MSCC), SI,
  			ConsumedUnits, {"requestSubType", "DEBIT"}]),
  	service_rating1(T, SCID, SI, [{struct, Parameters} | Acc]);
  service_rating1([#'3gpp_ro_Multiple-Services-Credit-Control'{}
  		= MSCC | T], SCID, SI, Acc) ->
  