anchor.diff:      let dimMins, dimRanges, dimMaxs = getMinsRangesAndMaxsOfDimensions vectors
       let randomCentroids = getRandomCentroids classCount dimMins dimMaxs
   
  +    // Imperious
       let mutable keepGoing = true
       let mutable centroids = randomCentroids
       let mutable count = 0
  
positive.code:             |> Array.map (fun x -> x / float samples.Length)
  
      let doneThreshold = 0.001;
      let checkKeepGoing (centroids : float [][]) (newCentroids : float[][]) dimensionRanges =
          (centroids, newCentroids)
          ||> Seq.map2 (Seq.map2 (-))
          |> Seq.map (Seq.map2 (fun range delta -> abs (delta / range)) dimensionRanges)
          |> Seq.collect (id)
          |> Seq.exists (fun delta -> delta >= doneThreshold)
         
  
      let displayCluster cluster =
  
negative.code:         let clusters  = getNewClusters samples centroids
          clusters |> Array.iter displayCluster
          let newCentroids = clusters |> Array.map getNewCentroid
          keepGoing <- not (checkDone centroids newCentroids dimRanges)
          centroids <- newCentroids
          count <- count + 1
          printfn "Completed cycle:  %d" count
          printfn "===================="
  
      // Funky
      ((Array.empty, randomCentroids), seq{1..1000})
          ||> Seq.scan(fun (_, prevCentroids) count ->
              printfn ""
              let clusters  = getNewClusters samples prevCentroids
              clusters |> Array.iter displayCluster
              let newCentroids = clusters |> Array.map getNewCentroid 
              printfn "Completed cycle:  %d" count
              printfn "===================="
              (prevCentroids, newCentroids))
          |> Seq.skip(1)
          |> Seq.filter(fun (prevCentroids, newCentroids) ->
              checkDone prevCentroids newCentroids dimRanges)
          |> Seq.head
          |> ignore
  
  
      printfn "All done."; System.Console.ReadKey() |> ignore
      0
  
  
  