           break
         if resol in ["minsec", "hourmin"] and not hybrid_handled
           if (resol == "minsec" and tm[4] == 0 and tm[5] != 0) or (resol == "hourmin" and tm[3] == 0 and tm[4] != 0)
-            next_format = @formats[@format_order[resol_ndx-1]][1][0]
+            next_format = @_width_formats[@format_order[resol_ndx-1]][1][0]
             s = _strftime(t, next_format)
             break
           else
             hybrid_handled = true
 
-        next_format = @formats[@format_order[next_ndx]][1][0]
+        next_format = @_width_formats[@format_order[next_ndx]][1][0]
         s = _strftime(t, next_format)
 
       # TODO: should expose this in api. %H, %d, etc use leading zeros and

      good_formats = []
      for i in [0...widths.length]
        if widths[i] * ticks.length < fill_ratio * char_width
          # FIXME I think "@formats" should be "formats".  (Perhaps they
          # should have more distinct names.)
          good_formats.push(@formats[i])
      if good_formats.length > 0
        format = _.last(good_formats)


  type: 'DatetimeTickFormatter'

  @define {
    formats: [ p.Any, {} ] # TODO (bev)
  }

  # Labels of time units, from finest to coarsest.
  format_order: [
