           month_date.setUTCMonth(month)
           return month_date)
 
-      # FIXME Use a list comprehension?
-      month_dates = _.flatten(year_dates.map((date) -> months_of_year(date)))
+      month_dates = _.flatten(months_of_year(date) for date in year_dates)
 
       all_ticks = _.invoke(month_dates, 'getTime')
       ticks_in_range = _.filter(all_ticks,

          # make sure we have a bit of room before we include a day.
          future_date = new Date(day_date.getTime() + (typical_interval / 2))
          if future_date.getUTCMonth() == month_date.getUTCMonth()
#             console.log("  push #{month_date} / #{month_date.toUTCString()} ~ (#{month_date.getUTCDate()} -> #{day}) = #{day_date}")
            dates.push(day_date)
        return dates

      # FIXME Use a list comprehension?
      day_dates = _.flatten(month_dates.map((date) -> days_of_month(date)))

      all_ticks = _.invoke(day_dates, 'getTime')
      # FIXME Since the ticks are sorted, this could be done more efficiently.

      start_factor = Math.floor(data_low / interval)
      end_factor   = Math.ceil(data_high / interval)
      factors = arange(start_factor, end_factor + 1)
      ticks = (factor * interval for factor in factors)
      return ticks

    toString: () ->
