anchor.diff:                hasDisabled = true;
               }
             }
  -          xScale.domain([metrics[0].data.first()[0], metrics[0].data.last()[0]]);
  +          xScale.domain([minX, maxX]);
             yScale.domain([hasDisabled ? 0.95 * minY : 0, 1.05 * maxY]);
           }
   
  +        var domain = xScale.domain(),
  +            na = (domain[0].getTime() == domain[1].getTime());
           var t = d3.select("#" + graphId);
           if (runTransition) {
             t = t.transition().duration(750);
  
positive.code:             .call(yAxis);
          t.selectAll(".plot line.level")
              .attr("y1", function(d) {return yScale(d.value)})
              .attr("y2", function(d) {return yScale(d.value)});
          t.selectAll(".plot circle.level")
              .attr("cy", function(d) {return yScale(d.value)});
  
          t.selectAll(".plot g.metric")
              .style("visibility", function (d) {return (d.enabled ? "visible" : "hidden")})
  
negative.code:           yScale.domain(zoomYDomain);
          }
          else {
            var minX = null,
                maxX = null,
                minY = null,
                maxY = null,
                hasDisabled = false;
            for (var metric, i = 0; i < metrics.length; i++) {
              metric = metrics[i];
              if (metric.enabled) {
                minX = minX ? Math.min(minX, metric.data.first()[0]) : metric.data.first()[0];
                maxX = maxX ? Math.min(maxX, metric.data.last()[0]) : metric.data.last()[0];
                minY = minY ? Math.min(minY, metric.yDomain[0]) : metric.yDomain[0];
                maxY = maxY ? Math.max(maxY, metric.yDomain[1]) : metric.yDomain[1];
              }
  