anchor.diff:  			F([_ | T]) ->
   				F(T)
   	end,
  -	{ChargingKey, ServiceId, Currency,
  +	{RG1, SI1, Currency,
   			Units, UnitSize, UnitPrice} = F(ServiceRating),
  -	case ocs_rating:charge(diameter, Subscriber, ServiceId,
  +	case ocs_rating:charge(diameter, Subscriber, SI1,
   			UnitSize, Units, Currency, UnitPrice, undefined,
  -			ChargingKey, Flag, Debits,
  +			RG1, Flag, Debits,
   			Reserves, [{'Session-Id', SessionId}]) of
   		{ok, _, {_, Amount} = GrantedAmount} when Amount > 0 ->
   			ResultCode2 = ?'DIAMETER_BASE_RESULT-CODE_SUCCESS',
   			MSCC = #{"grantedUnit" => granted_unit(GrantedAmount),
  -					"serviceId" => ServiceId, "ratingGroup" => ChargingKey,
  +					"serviceId" => SI1, "ratingGroup" => RG1,
   					"resultCode" => ResultCode2},
   			charge(Subscribers, ServiceRating, T1, SessionId, Flag, [MSCC | Acc1], ResultCode2);
   		{ok, _, {_, 0} = _GrantedAmount} ->
  
positive.code: 			end,
  			MSCC = case RedirectServerAddress of
  				undefined ->
  					#{"serviceId" => ServiceId, "ratingGroup" => ChargingKey,
  							"resultCode" => ResultCode2};
  				RedirectServerAddress when is_list(RedirectServerAddress) ->
  					#{"serviceId" => ServiceId, "ratingGroup" => ChargingKey,
  							"finalUnitIndication" => fui(RedirectServerAddress),
  							"resultCode" => ResultCode2}
  			end,
  
negative.code: 				Address, Direction, interim, SessionId, Amounts) of
  			{{MSCC2, ResultCode}, [], []} ->
  				{ok, MSCC2, ResultCode};
  			{{MSCC2, _ResultCode}, PLA, Amounts1} ->
  				{ok, get_ref(SessionId), PLA, Amounts1, MSCC2};
  			{error, Reason} ->
  				{error, Reason}
  		end,
  		case RfResponse of
  			{ok, ServiceRating, PLA1, Amounts2, MSCC3} ->
  				case charge(Subscribers, ServiceRating, Amounts2, SessionId, interim) of
  					{ok, NewMSCC1, ResultCode1} ->
  						Container = build_container(MSCC1),
  						NewMSCC3 = build_mscc(NewMSCC1 ++ MSCC3, Container),
  