Index: trunk/psLib/src/math/psPolynomial.c
===================================================================
--- trunk/psLib/src/math/psPolynomial.c	(revision 1765)
+++ trunk/psLib/src/math/psPolynomial.c	(revision 1775)
@@ -7,6 +7,6 @@
  *  polynomials.  It also contains a Gaussian functions.
  *
- *  @version $Revision: 1.32 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-09-09 23:39:36 $
+ *  @version $Revision: 1.33 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-09-10 02:52:02 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -1593,11 +1593,15 @@
     float width;
 
+    if (fabs(max-min) < FLT_EPSILON) {
+        psLogMsg(__func__, PS_LOG_WARN, "min and max are the same.\n");
+        return(NULL);
+    }
+
     tmp = (psSpline1D *) psAlloc(sizeof(psSpline1D));
-
     tmp->n = numSplines;
 
     tmp->spline = (psPolynomial1D **) psAlloc(numSplines * sizeof(psPolynomial1D *));
     for (i=0;i<numSplines;i++) {
-        (tmp->spline)[i] = psPolynomial1DAlloc(order, PS_POLYNOMIAL_ORD);
+        (tmp->spline)[i] = psPolynomial1DAlloc(order+1, PS_POLYNOMIAL_ORD);
     }
 
@@ -1626,8 +1630,9 @@
 
     numSplines = bounds->n - 1;
+    tmp->n = numSplines;
 
     tmp->spline = (psPolynomial1D **) psAlloc(numSplines * sizeof(psPolynomial1D *));
     for (i=0;i<numSplines;i++) {
-        (tmp->spline)[i] = psPolynomial1DAlloc(order, PS_POLYNOMIAL_ORD);
+        (tmp->spline)[i] = psPolynomial1DAlloc(order+1, PS_POLYNOMIAL_ORD);
     }
 
@@ -1668,5 +1673,6 @@
     mid = (max-min)/2;
 
-    while (min != max) {
+    while (min+1 < max) {
+        psTrace(".psLib.dataManip.psFunctions.VectorBinDisect", 4, "(min, max) is (%d, %d)\n", min, max);
         mid = (max-min)/2;
 
@@ -1721,6 +1727,6 @@
 
 
-psSpline1D *psSpline1DEGen(const psSpline1D *spline,
-                           psVector *data)
+psSpline1D *psSpline1DGen(const psSpline1D *spline,
+                          psVector *data)
 {
     int i;
@@ -1734,5 +1740,5 @@
     }
     // XXX: verify your math
-    if (1 == (spline->spline[0])->n) {
+    if (2 == (spline->spline[0])->n) {
         for (i=0;i<spline->n;i++) {
             slope = (data->data.F32[i+1] - data->data.F32[i]) /
@@ -1742,9 +1748,6 @@
             (spline->spline[0])->coeff[1] = slope;
         }
-
-        psLogMsg(__func__, PS_LOG_WARN,
-                 "Linear splines have not been implemented.");
-        return(NULL);
-    } else if (3 == (spline->spline[0])->n) {
+        return((psSpline1D *) spline);
+    } else if (4 == (spline->spline[0])->n) {
         psLogMsg(__func__, PS_LOG_WARN,
                  "Cubic splines have not been implemented.");
@@ -1753,5 +1756,5 @@
         psLogMsg(__func__, PS_LOG_WARN,
                  "Don't know how to generate %d-order splines.",
-                 (spline->spline[0])->n);
+                 (spline->spline[0])->n-1);
         return(NULL);
     }
