                                    (lrand-int outof))))
                           diffs)
                   changed (vec (filter #(or (< (count (filtered-history %)) diffs)
-                                            (>= (count (distinct (take outof 
+                                            (>= (count (distinct (take outof
                                                                        (filtered-history %))))
                                                 diffs))
                                        pop))]

            (let [diffs (first knock-spec)
                  outof (second knock-spec)
                  limit (if (= outof :random) (nth knock-spec 2) nil)
                  outof (if (= outof :random) 
                          (if min2?
                            (inc (inc (lrand-int (dec limit))))
                            (inc (lrand-int limit)))

  (int (* maxfrac outof)). If the first item in (:knock-off-chip-off-the-old-block argmap)
  is :unsolved, then the remainder are interpreted as above, but only errors
  that are not solved for a given individual are considered in the filtering.
  If it is :unsolved-subset, then only a random subset of those considered
  with :unsolved will be considered. If the first item in 
  (:knock-off-chip-off-the-old-block argmap) is :min2, then the remainder are 
  interpreted as above, but the minimum for random values is 2 rather than 1."
  [pop argmap]
  (let [knock-spec (:knock-off-chip-off-the-old-block argmap)]
    (if (not knock-spec)
