anchor.diff:  		Interval :: pos_integer(),
   		Result :: ok | {error, Reason},
   		Reason :: term().
  -%% @doc
  +%% @doc Starts the schedule of recurring charges.
   start(ScheduledTime, Interval) ->
  -	NextInterval = interval(ScheduledTime, Interval),
  -	case timer:apply_interval(NextInterval, ?MODULE, product_charge, []) of
  +	StartDelay = start_delay(ScheduledTime, Interval),
  +	case timer:apply_after(StartDelay, ?MODULE, run_recurring, []) of
   		{ok, _TRef} ->
   			ok;
   		{error, Reason} ->
  -			error_logger:error_report(["Failed to apply charging schedule interval",
  -				{module, ?MODULE}, {interval, NextInterval}, {error, Reason}]),
  +			error_logger:error_report(["Scheduler Failed",
  +					{module, ?MODULE}, {delay, StartDelay},
  +					{interval, Interval}, {error, Reason}]),
   			{error, Reason}
   	end.
   
   -spec product_charge() -> ok.
  -%% @doc Scheduler update for all the subscriptions.
  +%% @doc Apply recurring charges to all subscriptions.
   product_charge() ->
   	case get_offers() of
   		{error, Reason} ->
  -			error_logger:error_report("Scheduler Failed",
  -					[{module, ?MODULE}, {reason, Reason}]);
  +			{error, Reason};
   		Offers ->
   			Now = erlang:system_time(?MILLISECOND),
   			product_charge1(get_product(start), Now, frp(Offers))
  
positive.code: 	ok.
  
  %% @hidden
  interval(ScheduledTime, Interval) ->
  	{Date, Time} = erlang:universaltime(),
  	Today = calendar:date_to_gregorian_days(Date),
  	Period = Interval div 1440,
  
negative.code: -module(ocs_scheduler).
  -copyright('Copyright (c) 2016 - 2017 SigScale Global Inc.').
  
  %% private API
  -export([start/0, start/2]).
  -export([product_charge/0]).
  %% private API
  -export([run_recurring/0]).
  
  -include("ocs.hrl").
  
  