       max = 100
       min = -100
 
-      values = []
-      sum = 0
-
       if m.get('display') == 'rate'
         data = m.get('rates')
       else
         data = m.get('values')
 
-      _.times data.length, (i) ->
-        val = data[i].value
-        target = m.getCompareAndVal(m.get('target'))
+      dataSeries = @splitData(data)
+      target = m.get('targetVal')
 
-        if m.get('display') != 'rate'
-          variance = Math.abs(m.get('targetVal') - val)
-          variance = Math.round((variance / m.get('targetVal')) * 100)
-        else
-          variance = Math.round((val / m.get('targetVal')) * 100)
+      dataSeries = _.map(dataSeries, (series, i)->
+        _.map(series, (val)->
+          if i == 0
+            variance = Math.abs(target - val[1])
+          else
+            variance =  Math.abs(target - val[1]) * -1
 
-        if m.compareVal(target, val)
-          if target[0][0] == '<'
-            variance = 100 - variance
-        else
-          if target[0][0] == '>'
-            variance = 100 - variance
+          if variance > max
+            max = variance
 
-          variance = variance * -1
+          if variance < min
+            min = variance
 
-        x = m.get('values')[i].date.getTime()
-        values.push([x, variance])
-
-        if variance > max
-          max = variance
-
-        if variance < min
-          min = variance
-
+          return [val[0], variance]
+        )
+      )
 
       aMin = Math.abs(min)
 

        mouse:
          track: true

      graph = Flotr.draw(container, [values], graphOpts)

    render: ->
      @$el.attr('id', @id)

        markers:
          show: true

      graph = Flotr.draw(container, dataSeries, graphOpts)

    varianceChart: ->
      yLabel = 'Variance from Target'
