anchor.diff:  
           // one X and multiple Y values 
           let internal mergeDataAndLabelsForXYS (data:seq<#key * #seq<#value>>) = 
  -            let data = NotifySeq.notifyOrOnce data // evaluate only once and cache
  +            let data = convertKeys1of2 (NotifySeq.notifyOrOnce data) // evaluate only once and cache
               let dataAndLabels = data |> NotifySeq.map (fun (x,ys) -> string (box x),(ys |> Array.ofSeq |> Array.map (fun x -> x :> value)))
               ChartData.BoxPlotValues(NotifySeq.ignoreReset dataAndLabels)
   
  
positive.code: 
          // Three Y values
          let internal mergeDataAndLabelsForXY3 data labels = 
              let xType = getChartValueType (Seq.map (fun (a, _, _, _) -> a) data)
              let data = NotifySeq.notifyOrOnce data // evaluate only once and cache
              match labels with 
              | None -> 
                  let dataAndLabels = data |> convertKeys1of4 |> NotifySeq.map (fun (x,y1,y2,y3) -> ThreeXYDataPoint(X=x,Y1=y1,Label=null,Y2=y2,Y3=y3))
                  ChartData.Values(NotifySeq.ignoreReset dataAndLabels, xType, "X", "Y1,Y2,Y3", "")
              | Some labels ->  
                  let labels = NotifySeq.notifyOrOnce labels
                  let dataAndLabels = NotifySeq.zip data labels |> convertKeys1of4of2 |> NotifySeq.map (fun ((x,y1,y2,y3),label) -> ThreeXYDataPoint(X=x,Y1=y1,Y2=y2,Y3=y3,Label=label))
                  ChartData.Values(NotifySeq.ignoreReset dataAndLabels, xType, "X", "Y1,Y2,Y3", "Label=Label")
  
  
          // One X and Four Y values
          let internal mergeDataAndLabelsForXY4 (data:seq<#key * #value * #value * #value * #value>) labels = 
              let xType = getChartValueType (Seq.map (fun (a, _, _, _, _) -> a) data)
              let data = NotifySeq.notifyOrOnce data // evaluate only once and cache
              match labels with 
              | None -> 
                  let dataAndLabels = data |> convertKeys1of5 |> NotifySeq.map (fun (x,y1,y2,y3,y4) -> FourXYDataPoint(X= string (box x),Y1=y1,Label=null,Y2=y2,Y3=y3,Y4=y4))
                  ChartData.Values(NotifySeq.ignoreReset dataAndLabels, xType, "X", "Y1,Y2,Y3,Y4", "")
              | Some labels ->  
                  let labels = NotifySeq.notifyOrOnce labels
                  let dataAndLabels = NotifySeq.zip data labels |> convertKeys1of5of2 |> NotifySeq.map (fun ((x,y1,y2,y3,y4),label) -> FourXYDataPoint(X= string (box x),Y1=y1,Y2=y2,Y3=y3,Y4=y4,Label=label))
                  ChartData.Values(NotifySeq.ignoreReset dataAndLabels, xType, "X", "Y1,Y2,Y3,Y4", "Label=Label")
  
          // Four Y values
  
negative.code:                 series.Points.DataBind(vs,xField,yField,otherFields)
  
              // Special case for BoxPlot
              | ChartData.BoxPlotValues(values) ->
                  let bindBoxPlot() = 
                      let labels = chart.ChartAreas.[0].AxisX.CustomLabels
                      if resetSeries then
  