     d3.merge [fetchData(vars,"all",d) for d in depths]
 
 axisRange = (vars, axis, zero, buffer) ->
+  oppAxis = if axis is "x" then "y" else "x"
   if vars[axis].range.value and vars[axis].range.value.length is 2
     vars[axis].range.value.slice()
   else if vars[axis].scale.value is "share"
     vars[axis].ticks.values = d3.range 0, 1.1, 0.1
     [0,1]
   else if vars[axis].stacked.value
-    oppAxis = if axis is "x" then "y" else "x"
     axisSums = d3.nest()
       .key (d) -> fetchValue vars, d, vars[oppAxis].value
       .rollup (leaves) ->

  else
    values = vars.axes.dataset.map (d) -> fetchValue vars, d, vars[axis].value
    if typeof values[0] is "string"
      uniques values
    else
      if zero
        allPositive = values[0] >= 0 and values[1] >= 0


    filtered = vars[axis].solo.changed or vars[axis].mute.changed
    modified = changed or vars[axis].changed or (vars.time.fixed.value and filtered) or vars[axis].scale.changed
    reorder = vars.order.changed or vars.order.sort.changed

    if modified or vars[axis].stacked.changed or vars[axis].range.changed or reorder

      print.time "calculating "+axis+" axis" if vars.dev.value

