anchor.diff:  	match_tariff(Tariffs, MSCCs, []).
   %% @hidden
   match_tariff(Tariffs, [H | T], Acc) ->
  -	F = fun F([#{"tariffElement" := #{"currencyCode" := Currency,
  -					"rateElements" := #{"unitType" := Units,
  -					"unitSize" := UnitSize, "unitCost" := UnitPrice}},
  -					"ratingGroup" := RG1, "serviceId" := SI1} | _],
  +	F = fun F([#{currentTariff := #{currencyCode := Currency,
  +					rateElements := #{unitType := Units,
  +					unitSize := UnitSize, unitCost := UnitPrice}},
  +					ratingGroup := RG1, serviceId := SI1} | _],
   					{[SI], [RG], Debits, Reserves})
   						when RG1 =:= RG, SI1 =:= SI ->
  -					#{"rg" => RG1, "si" => SI1, "currency" => Currency,
  -							"units" => Units, "unitSize" => UnitSize,
  -							"unitPrice" => UnitPrice, "debits" => Debits,
  -							"reserves" => Reserves};
  -			F([#{"tariffElement" := #{"currencyCode" := Currency,
  -					"rateElements" := #{"unitType" := Units,
  -					"unitSize" := UnitSize, "unitCost" := UnitPrice}},
  -					"serviceId" := SI1} | _],
  +					#{rg => RG1, si => SI1, currency => Currency,
  +							units => Units, unitSize => UnitSize,
  +							unitPrice => UnitPrice, debits => Debits,
  +							reserves => Reserves};
  +			F([#{currentTariff := #{currencyCode := Currency,
  +					rateElements := #{unitType := Units,
  +					unitSize := UnitSize, unitCost := UnitPrice}},
  +					serviceId := SI1} | _],
   					{[SI], [], Debits, Reserves})
   						when SI1 =:= SI ->
  -					#{"rg" => undefined, "si" => SI1, "currency" => Currency,
  -							"units" => Units, "unitSize" => UnitSize,
  -							"unitPrice" => UnitPrice, "debits" => Debits,
  -							"reserves" => Reserves};
  -			F([#{"tariffElement" := #{"currencyCode" := Currency,
  -					"rateElements" := #{"unitType" := Units,
  -					"unitSize" := UnitSize, "unitCost" := UnitPrice}},
  -					"ratingGroup" := RG1} | _],
  +					#{rg => undefined, si => SI1, currency => Currency,
  +							units => Units, unitSize => UnitSize,
  +							unitPrice => UnitPrice, debits => Debits,
  +							reserves => Reserves};
  +			F([#{currentTariff := #{currencyCode := Currency,
  +					rateElements := #{unitType := Units,
  +					unitSize := UnitSize, unitCost := UnitPrice}},
  +					ratingGroup := RG1} | _],
   					{[], [RG], Debits, Reserves})
   						when RG1 =:= RG ->
  -					#{"rg" => RG1, "si" => undefined, "currency" => Currency,
  -							"units" => Units, "unitSize" => UnitSize,
  -							"unitPrice" => UnitPrice, "debits" => Debits,
  -							"reserves" => Reserves};
  -			F([H1 | T1], MSCC) ->
  +					#{rg => RG1, si => undefined, currency => Currency,
  +							units => Units, unitSize => UnitSize,
  +							unitPrice => UnitPrice, debits => Debits,
  +							reserves => Reserves};
  +			F([_ | T1], MSCC) ->
   				F(T1, MSCC);
   			F([], _MSCC) ->
   				{error, missing_tariff}
  
positive.code: 			end,
  			MSCC = case RedirectServerAddress of
  				undefined ->
  					#{"serviceId" => SI, "ratingGroup" => RG,
  							"resultCode" => ResultCode2};
  				RedirectServerAddress when is_list(RedirectServerAddress) ->
  					#{"serviceId" => SI, "ratingGroup" => RG,
  							"finalUnitIndication" => fui(RedirectServerAddress),
  							"resultCode" => ResultCode2}
  			end,
  			charge1(Subscriber, SessionId, Flag, T, [MSCC | Acc], ResultCode3);
  		{disabled, _SessionList} ->
  
negative.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,
  			rate(ServiceType, ServiceNetwork, Subscribers,
  					Timestamp, Address, Direction, Flag, SessionId,
  