MATH-1462: Extend workaround for bins that contain up to 3 values.
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/EmpiricalDistribution.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/EmpiricalDistribution.java
index 7929378..cca2c19 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/EmpiricalDistribution.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/EmpiricalDistribution.java
@@ -409,7 +409,8 @@
             ++i;
         }
 
-        final ContinuousDistribution kernel = getKernel(binStats.get(i));
+        final SummaryStatistics stats = binStats.get(i);
+        final ContinuousDistribution kernel = getKernel(stats);
         final double kB = kB(i);
         final double[] binBounds = getUpperBounds();
         final double lower = i == 0 ? min : binBounds[i - 1];
@@ -546,7 +547,7 @@
      */
     private static Function<SummaryStatistics, ContinuousDistribution> defaultKernel() {
         return stats -> {
-            if (stats.getN() <= 1 ||
+            if (stats.getN() <= 3 ||
                 stats.getVariance() == 0) {
                 return new ConstantContinuousDistribution(stats.getMean());
             } else {
diff --git a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/distribution/EmpiricalDistributionTest.java b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/distribution/EmpiricalDistributionTest.java
index 4f26e4e..addd94a 100644
--- a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/distribution/EmpiricalDistributionTest.java
+++ b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/distribution/EmpiricalDistributionTest.java
@@ -489,13 +489,12 @@
             6212, 5961, 711
         };
 
-        final EmpiricalDistribution ed = EmpiricalDistribution.from(1000, data);
+        final double p = 0.32;
+        for (int i = 745; i <= 1100; i++) {
+            final EmpiricalDistribution ed = EmpiricalDistribution.from(i, data);
+            final double v = ed.inverseCumulativeProbability(p);
 
-        double v;
-        double p;
-
-        p = 0.32;
-        v = ed.inverseCumulativeProbability(p);
-        Assert.assertTrue("p=" + p + " => v=" + v, Double.isFinite(v));
+            Assert.assertTrue("p=" + p + " => v=" + v, Double.isFinite(v));
+        }
     }
 }
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 595ebe8..5c276ce 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -97,6 +97,9 @@
  nightmare was one of the main reasons for creating more focused
  components.]
 ">
+      <action dev="erans" type="fix" issue="MATH-1462">
+        "EmpiricalDistribution": Use constant kernel for bins that contain up to 3 values.
+      </action>
       <action dev="aherbert" due-to="Arturo Bernal" type="update">
         Simplify assertions with simpler equivalent.
       </action>