Handle overflow in probability computation
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PascalDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PascalDistribution.java
index 94d385b..55b27ab 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PascalDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PascalDistribution.java
@@ -112,10 +112,16 @@
             // Special case exploiting cancellation.
             ret = Math.pow(probabilityOfSuccess, numberOfSuccesses);
         } else {
-            ret = BinomialCoefficientDouble.value(x +
-                  numberOfSuccesses - 1, numberOfSuccesses - 1) *
-                  Math.pow(probabilityOfSuccess, numberOfSuccesses) *
-                  Math.pow(1.0 - probabilityOfSuccess, x);
+            final int n = x + numberOfSuccesses - 1;
+            if (n < 0) {
+                // overflow
+                // The binomial coefficient -> inf when n -> inf
+                ret = 0.0;
+            } else {
+                ret = BinomialCoefficientDouble.value(n, numberOfSuccesses - 1) *
+                      Math.pow(probabilityOfSuccess, numberOfSuccesses) *
+                      Math.pow(1.0 - probabilityOfSuccess, x);
+            }
         }
         return ret;
     }
@@ -130,10 +136,17 @@
             // Special case exploiting cancellation.
             ret = logProbabilityOfSuccess * numberOfSuccesses;
         } else {
-            ret = LogBinomialCoefficient.value(x +
-                  numberOfSuccesses - 1, numberOfSuccesses - 1) +
-                  logProbabilityOfSuccess * numberOfSuccesses +
-                  log1mProbabilityOfSuccess * x;
+            final int n = x + numberOfSuccesses - 1;
+            if (n < 0) {
+                // overflow
+                // The binomial coefficient -> inf when n -> inf
+                ret = Double.NEGATIVE_INFINITY;
+            } else {
+                ret = LogBinomialCoefficient.value(x +
+                      numberOfSuccesses - 1, numberOfSuccesses - 1) +
+                      logProbabilityOfSuccess * numberOfSuccesses +
+                      log1mProbabilityOfSuccess * x;
+            }
         }
         return ret;
     }