       super()
 
       # FIXME Validate that the scales don't overlap.
-      @min_intervals = @scales.map((s) -> s.get_min_interval())
-      @max_intervals = @scales.map((s) -> s.get_max_interval())
+      @min_intervals = _.invoke(@scales, 'get_min_interval')
+      @max_intervals = _.invoke(@scales, 'get_max_interval')
 
     get_min_interval: () ->
       return @min_intervals[0]

                                ((tick) -> data_low <= tick <= data_high))

      return ticks_in_range

  class SimpleScale extends CompositeScale
    constructor: (intervals) ->
      super(intervals.map((interval) ->
        return new SingleIntervalScale(interval)))

  HUNDRED_MILLIS = 100.0
  ONE_SECOND = 1000.0

      # Our resolution boundaries are not round numbers, because we want them
      # to fall between the possible tick intervals (which are round numbers,
      # as we've worked hard to ensure).
      # FIXME Maybe make the adjustments explicit?
      r = resolution
      span = interval
      if r < 6e-4
