anchor.diff:  rate(_, _, _, _, _, _, _, _, [], Acc1, Acc2, ResultCode, Rated) ->
   	{{lists:reverse(Acc1), ResultCode, Rated}, Acc2}.
   
  --spec	charge(Subscriber, ServiceRating, PLA, SessionId, Flag) -> Result
  +-spec charge(Subscriber, ServiceRating, PLA, SessionId, Flag) -> Result
   	when
   		Subscriber :: binary(),
   		ServiceRating :: [map()],
  
positive.code: 	case reserved_unit(RSU) of
  		[] ->
  			ServiceRating = {struct, [SCID, {"requestSubType", "RESERVE"} | Acc4]},
  				initial_service_rating_b(T, SCID, SInfo, Des, [ServiceRating | Acc]);
  		ReservedUnits ->
  			ServiceRating = {struct, [SCID, {"requestedUnit", {struct, ReservedUnits}},
  					{"requestSubType", "RESERVE"} | Acc4]},
  			initial_service_rating_b(T, SCID, SInfo, Des, [ServiceRating | Acc])
  	end;
  initial_service_rating_b([], _SCID, _SI, _Des, Acc) ->
  	Acc.
  
  -spec initial_service_rating_a(Subscribers, MSCC,
  		ServiceContextId) -> ServiceRating
  	when
  		Subscribers :: [Subscriber],
  		Subscriber :: {IdType, Id},
        IdType :: msisdn | imsi,
        Id :: binary(),
  		MSCC :: [#'3gpp_ro_Multiple-Services-Credit-Control'{}],
  		ServiceContextId :: string(),
  		ServiceRating :: [{struct, [tuple()]}].
  %% Create list of service elements to be rated.
  initial_service_rating_a(Subscribers, MSCC, ServiceContextId) ->
  	SCID = {"serviceContextId", ServiceContextId},
  	initial_service_rating_a(Subscribers, MSCC, SCID, []).
  %% @hidden
  initial_service_rating_a(Subscribers, [#{"serviceId" := SI,
  		"ratingGroup" := RG} = _MSCC | T], SCID, Acc) ->
  	Acc1 = case SI of
  		undefined ->
  			[];
  
negative.code: 	when
  		Subscribers :: [Subscriber],
  		Subscriber :: {IdType, Id},
  	IdType :: msisdn | imsi,
  	Id :: binary(),
  		ServiceContextId :: binary(),
  		SessionId :: binary(),
  		MSCC :: [#'3gpp_ro_Multiple-Services-Credit-Control'{}] | [],
  