anchor.diff:              #st{subscribers = Subs} = St) ->
       case lists:keyfind(Key, #subscriber.key, Subs) of
           #subscriber{} = Sub ->
  -            case {RetryFailedMetrics,  exometer:get_value(Metric, DataPoint)} of
  -                %% We found a value.
  -                {_, {ok, Values}} ->
  +            case {RetryFailedMetrics,  get_values(Metric, DataPoint)} of
  +                %% We found a value, or values.
  +                {_, [_|_] = Found} ->
                       %% Distribute metric value to the correct process
  -                    [report_value(Reporter, Metric, DP, Extra, Val)
  -                     || {DP, Val} <- Values],
  +                    [[report_value(Reporter, Name, DP, Extra, Val)
  +		      || {DP, Val} <- Values] || {Name, Values} <- Found],
   
                       %% Re-arm the timer for next round
                       TRef = erlang:send_after(Interval, self(),
  
positive.code: %%% Internal functions
  %%%===================================================================
  
  first_datapoint([DP|_]) ->
      DP;
  first_datapoint(DP) when is_atom(DP); is_integer(DP) ->
      DP.
  
  
  assert_no_duplicates([{R,_}|T]) ->
  
negative.code:     %% Verify that the given metric/data point actually exist.
      case lists:keyfind(Reporter, #reporter.module, Rs) of
          #reporter{} ->
  	    case is_valid_metric(Metric, DataPoint) of
  		true ->
                      Reporter ! {exometer_subscribe, Metric,
                                  DataPoint, Interval, Extra},
                      Sub = subscribe_(Reporter, Metric, DataPoint,
                                       Interval, RetryFailedMetrics, Extra),
                      {reply, ok, St#st{ subscribers = [Sub | Subs] }};
                  %% Nope - Not found.
                  false -> {reply, not_found, St }
              end;
          false ->
              {reply, unknown_reporter, St}
  