                          (= e p1e) 2
                          :else 2)))
                 (vec (repeat (count (:errors ind)) 2)))
+              #_(if (and (:parent1-errors ind)
+                       (:parent2-errors ind))
+                (vec (for [[e p1e p2e] (mapv #(vector %1 %2 %3)
+                                             (:errors ind)
+                                             (:parent1-errors ind)
+                                             (:parent2-errors ind))]
+                       (cond 
+                         (zero? e) 0
+                         (< e (min p1e p2e)) 1
+                         (< e (max p1e p2e)) 2
+                         (not (some #{e} [p1e p2e])) 3
+                         :else 4)))
+                (vec (repeat (count (:errors ind)) 4)))
+              #_(if (and (:parent1-errors ind)
+                       (:parent2-errors ind))
+                (vec (for [[e p1e p2e] (mapv #(vector %1 %2 %3)
+                                             (:errors ind)
+                                             (:parent1-errors ind)
+                                             (:parent2-errors ind))]
+                       (cond 
+                         ;(zero? e) 0
+                         (< e (min p1e p2e)) 1
+                         (< e (max p1e p2e)) 2
+                         (not (some #{e} [p1e p2e])) 3
+                         :else 4)))
+                (vec (repeat (count (:errors ind)) 4)))
+              #_(if (and (:parent1-errors ind)
+                       (:parent2-errors ind))
+                (vec (for [[e p1e p2e] (mapv #(vector %1 %2 %3)
+                                             (:errors ind)
+                                             (:parent1-errors ind)
+                                             (:parent2-errors ind))]
+                       (cond 
+                         ;(zero? e) 0
+                         (< e (min p1e p2e)) 1
+                         (< e (max p1e p2e)) 2
+                         (some #{e} [p1e p2e]) 3
+                         :else 4)))
+                (vec (repeat (count (:errors ind)) 4)))
+              (if (and (:parent1-errors ind)
+                       (:parent2-errors ind))
+                (vec (for [[e p1e p2e] (mapv #(vector %1 %2 %3)
+                                             (:errors ind)
+                                             (:parent1-errors ind)
+                                             (:parent2-errors ind))]
+                       (cond 
+                         (zero? e) 0
+                         (< e (min p1e p2e)) 0
+                         (< e (max p1e p2e)) 1
+                         (some #{e} [p1e p2e]) 2
+                         :else 3)))
+                (vec (repeat (count (:errors ind)) 3)))
               ;
               (= cat :error-neglect)
               #_(if (and (:parent1-errors ind) (:parent2-errors ind))

                                               (iterate (partial * (- 1 improvement-discount)) 1))
                                 sum (reduce + (mapv * improvements weights))]
                             (- sum)))))))
              #_(if (not (:print-history argmap))
                (throw
                  (Exception.

                                               (iterate (partial * (- 1 improvement-discount)) 1))
                                 sum (reduce + (mapv * improvements weights))]
                             (- sum)))))))
              #_(if (not (:print-history argmap))
                (throw
                  (Exception.
                    ":print-history must be true for :case-stagnation"))
