anchor.diff:                    convert(cloudi_math:ceil(NanoSecondsMonth),
                             nanosecond, native),
       NanoSecondsDowntime = nanoseconds_downtime(UpdateTimeList,
  -                                               NativeMonth, TimeNow),
  +                                               TimeNow - NativeMonth),
       AvailabilityMonth = (erlang:min(NanoSecondsRunning, NanoSecondsMonth) -
           NanoSecondsDowntime) / NanoSecondsMonth,
       availability_to_string(AvailabilityMonth).
  
positive.code:     NativeDay = cloudi_timestamp:
                  convert(NanoSecondsDay, nanosecond, native),
      NanoSecondsDowntime = nanoseconds_downtime(UpdateTimeList,
                                                 NativeDay, TimeNow),
      AvailabilityDay = (erlang:min(NanoSecondsRunning, NanoSecondsDay) -
          NanoSecondsDowntime) / NanoSecondsDay,
      availability_to_string(AvailabilityDay).
  
negative.code:                  convert(cloudi_math:ceil(NanoSecondsYear),
                           nanosecond, native),
      NanoSecondsDowntime = nanoseconds_downtime(UpdateTimeList,
                                                 TimeNow - NativeYear),
      AvailabilityYear = (erlang:min(NanoSecondsRunning, NanoSecondsYear) -
          NanoSecondsDowntime) / NanoSecondsYear,
      availability_to_string(AvailabilityYear).
  
  nanoseconds_downtime(UpdateTimeList, T) ->
      nanoseconds_downtime(UpdateTimeList, 0, T).
  
  nanoseconds_downtime([], NanoSecondsDowntime, _) ->
      NanoSecondsDowntime;
  nanoseconds_downtime([{T0, T1} | UpdateTimeList], NanoSecondsDowntime, T) ->
      NanoSecondsDowntimeNew = if
          T0 >= T ->
              cloudi_timestamp:
  