anchor.diff:              |> Seq.distinct
   
           let rows =
  -            keys
  -            |> Seq.map (fun key ->
  -                let datapoints =
  -                    series
  -                    |> Seq.map (fun x -> Seq.tryFind (fun dp -> dp.X = key) x.DataPoints)
  -                let fields' =
  -                    [
  -                        for x in datapoints do
  -                            if x.IsSome then
  -                                let x' = Option.get x
  -                                yield Some x'.Y1
  -                                if x'.Y2.IsSome then yield x'.Y2
  -                                if x'.Y3.IsSome then yield x'.Y3
  -                                if x'.Y4.IsSome then yield x'.Y4
  -                            else yield None
  -                    ]
  -                    |> List.mapi (fun idx x -> x, idx + 1)
  -                key, fields'
  -            )
  +            match groupByKey with
  +            | false ->
  +                series
  +                |> Seq.nth 0
  +                |> fun x ->
  +                    x.DataPoints
  +                    |> Seq.map (fun dp ->
  +                        let key = dp.X
  +                        let fields =
  +                            [
  +                                    yield Some dp.Y1
  +                                    if dp.Y2.IsSome then yield dp.Y2
  +                                    if dp.Y3.IsSome then yield dp.Y3
  +                                    if dp.Y4.IsSome then yield dp.Y4
  +                            ]
  +                            |> List.mapi (fun idx x -> x, idx + 1)
  +                        key, fields)
  +            | true ->
  +                keys
  +                |> Seq.map (fun key ->
  +                    let datapoints =
  +                        series
  +                        |> Seq.map (fun x -> Seq.tryFind (fun dp -> dp.X = key) x.DataPoints)
  +                    let fields' =
  +                        [
  +                            for x in datapoints do
  +                                if x.IsSome then
  +                                    let x' = Option.get x
  +                                    yield Some x'.Y1
  +                                    if x'.Y2.IsSome then yield x'.Y2
  +                                    if x'.Y3.IsSome then yield x'.Y3
  +                                    if x'.Y4.IsSome then yield x'.Y4
  +                                else yield None
  +                        ]
  +                        |> List.mapi (fun idx x -> x, idx + 1)
  +                    key, fields'
  +                )
               
           let sysDt = new System.Data.DataTable()
   
  
positive.code: 
          static member New dps = {DataPoints = dps}
  
      let makeDataTable series labels =
  
          let dps =
              series
  
negative.code: ﻿namespace XPlot.GoogleCharts
  
  open Google.DataTable.Net.Wrapper.Extension
  open Microsoft.FSharp.Reflection
  