Index: ResultTable.cc
--- ResultTable.cc.orig
+++ ResultTable.cc
@@ -44,7 +44,7 @@ ResultTable::ResultTable(unsigned int inc, unsigned in
     // can't handle "new (footype *)[bar]".  We're trying to do:
     // data = new (double *) [columns];
     typedef double *DoublePtr;
-    data = new (double *[columns]);
+    data = new DoublePtr[columns];
     if (data == NULL) {
 	fprintf(stderr, "Couldn't allocate data array for a ResultTable\n");
 	exit(1);
@@ -767,6 +767,12 @@ void ResultTable::lms(double &a, double &b, double &r2
 
 }
 
+template<typename X>
+X absdiff(X a, X b)
+{
+	return a < b ? b - a : a - b;
+}
+
 //
 // ResultTable::lmsint
 //
@@ -909,7 +915,7 @@ void ResultTable::lmsint(double &a, double &b, double 
 	l = 0;
 	for (i = 0; i < columns; i++) {
 	    if (partialmins[i] != timeoutresult) {
-		residuals[l] = abs(partialmins[i] - 
+		residuals[l] = absdiff(partialmins[i],
 				   ((currentslope * 
 				     column2size(i) /
 				     slopescale) +
@@ -930,7 +936,7 @@ void ResultTable::lmsint(double &a, double &b, double 
 	l = 0;
 	for (i = 0; i < columns; i++) {
 	    if (partialmins[i] != timeoutresult) {
-		ys[l] = abs(partialmins[i] - mediany);
+		ys[l] = absdiff(partialmins[i], mediany);
 		l++;
 	    }
 	}
