anchor.diff:                   convert(cloudi_math:ceil(NanoSecondsYear),
                            nanosecond, native),
       NanoSecondsDowntime = nanoseconds_downtime(UpdateTimeList,
  -                                               NativeYear, TimeNow),
  +                                               TimeNow - NativeYear),
       AvailabilityYear = (erlang:min(NanoSecondsRunning, NanoSecondsYear) -
           NanoSecondsDowntime) / NanoSecondsYear,
       availability_to_string(AvailabilityYear).
   
  -nanoseconds_downtime(UpdateTimeList, NativePeriod, TimeNow) ->
  -    nanoseconds_downtime(UpdateTimeList, 0, NativePeriod, TimeNow).
  -
  -nanoseconds_downtime([], NanoSecondsDowntime, _, _) ->
  +nanoseconds_downtime(UpdateTimeList, T) ->
  +    nanoseconds_downtime(UpdateTimeList, 0, T).
  +
  +nanoseconds_downtime([], NanoSecondsDowntime, _) ->
       NanoSecondsDowntime;
  -nanoseconds_downtime([{T0, T1} | UpdateTimeList], NanoSecondsDowntime,
  -                     NativePeriod, TimeNow) ->
  -    T = TimeNow - NativePeriod,
  +nanoseconds_downtime([{T0, T1} | UpdateTimeList], NanoSecondsDowntime, T) ->
       NanoSecondsDowntimeNew = if
           T0 >= T ->
               cloudi_timestamp:
  
positive.code:                   convert(cloudi_math:ceil(NanoSecondsMonth),
                            nanosecond, native),
      NanoSecondsDowntime = nanoseconds_downtime(UpdateTimeList,
                                                 NativeMonth, TimeNow),
      AvailabilityMonth = (erlang:min(NanoSecondsRunning, NanoSecondsMonth) -
          NanoSecondsDowntime) / NanoSecondsMonth,
      availability_to_string(AvailabilityMonth).
  
negative.code:         true ->
              NanoSecondsDowntime
      end,
      nanoseconds_downtime(UpdateTimeList, NanoSecondsDowntimeNew, T).
  
  % avoid erlang:float_to_list precision problems
  % and keep the formatting efficient
  