docs: def ttl(self, steps, relative_time=None):
      '''
      Return the ttl given the number of steps, None if steps is not defined
      or we're otherwise unable to calculate one. If relative_time is defined,
      then return a ttl that is the number of seconds from now that the
      record should be expired.
      '''
      if steps:
        # Approximate the ttl based on number of seconds, since it's
        # "close enough"
        if relative_time:
          rtime = self.to_bucket(relative_time)
          ntime = self.to_bucket(time.time())
  
          # Convert to number of days
          day_diff = (self.from_bucket(ntime, native=True) - self.from_bucket(rtime, native=True)).days
          # Convert steps to number of days as well
          step_diff = (steps*SIMPLE_TIMES[self._step[0]]) / SIMPLE_TIMES['d']
  
          # The relative time is beyond our TTL cutoff
          if day_diff > step_diff:
            return 0
          # The relative time is in "recent" past or future
          else:
            return (step_diff - day_diff) * SIMPLE_TIMES['d']
        return steps * SIMPLE_TIMES[ self._step[0] ]
  
      return None