Index: trunk/Ohana/src/libdvo/src/dvosorts.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvosorts.c	(revision 40395)
+++ trunk/Ohana/src/libdvo/src/dvosorts.c	(revision 40397)
@@ -7,5 +7,6 @@
 
 # define SWAPFUNC(A,B){ Average tmp; tmp = ave[A]; ave[A] = ave[B]; ave[B] = tmp; }
-# define COMPARE(A,B)(ave[A].R < ave[B].R)
+# define COMPARE(A,B)((!isfinite(ave[A].R) && isfinite(ave[B].R)) || (ave[A].R < ave[B].R))
+// # define COMPARE(A,B)                                             (ave[A].R < ave[B].R)
 
   OHANA_SORT (N, COMPARE, SWAPFUNC);
@@ -50,5 +51,6 @@
   itmp = S[A]; S[A] = S[B]; S[B] = itmp; \
 }
-# define COMPARE(A,B)(X[A] < X[B])
+// # define COMPARE(A,B)                                     (X[A] < X[B])
+# define COMPARE(A,B)((!isfinite(X[A]) && isfinite(X[B])) || (X[A] < X[B]))
 
   OHANA_SORT (N, COMPARE, SWAPFUNC);
@@ -81,5 +83,5 @@
   itmp = S[A]; S[A] = S[B]; S[B] = itmp; \
 }
-# define COMPARE(A,B)(X[S[A]] < X[S[B]])
+# define COMPARE(A,B)((!isfinite(X[S[A]]) && isfinite(X[S[B]])) || (X[S[A]] < X[S[B]]))
 
   OHANA_SORT (N, COMPARE, SWAPFUNC);
@@ -93,5 +95,6 @@
 
 # define SWAPFUNC(A,B){ SkyRegion tmp; tmp = region[A]; region[A] = region[B]; region[B] = tmp; }
-# define COMPARE(A,B)(region[A].Dmin < region[B].Dmin)
+// # define COMPARE(A,B)(region[A].Dmin < region[B].Dmin)
+# define COMPARE(A,B)((!isfinite(region[A].Dmin) && isfinite(region[B].Dmin)) || (region[A].Dmin < region[B].Dmin))
 
   OHANA_SORT (N, COMPARE, SWAPFUNC);
