Index: trunk/psLib/src/db/psDB.c
===================================================================
--- trunk/psLib/src/db/psDB.c	(revision 40290)
+++ trunk/psLib/src/db/psDB.c	(revision 41896)
@@ -2875,37 +2875,36 @@
 
     switch (pType) {
-    case PS_DATA_S8:
+      case PS_DATA_S8:
         isNaN = PS_IS_NAN(psS8, data, PS_MAX_S8);
         break;
-    case PS_DATA_S16:
+      case PS_DATA_S16:
         isNaN = PS_IS_NAN(psS16, data, PS_MAX_S16);
         break;
-    case PS_DATA_S32:
+      case PS_DATA_S32:
         isNaN = PS_IS_NAN(psS32, data, PS_MAX_S32);
         break;
-    case PS_DATA_S64:
+      case PS_DATA_S64:
         isNaN = PS_IS_NAN(psS64, data, PS_MAX_S64);
         break;
-    case PS_DATA_U8:
+      case PS_DATA_U8:
         isNaN = PS_IS_NAN(psU8, data, PS_MAX_U8);
         break;
-    case PS_DATA_U16:
+      case PS_DATA_U16:
         isNaN = PS_IS_NAN(psU16, data, PS_MAX_U16);
         break;
-    case PS_DATA_U32:
+      case PS_DATA_U32:
         isNaN = PS_IS_NAN(psU32, data, PS_MAX_U32);
         break;
-    case PS_DATA_U64:
+      case PS_DATA_U64:
         isNaN = PS_IS_NAN(psU64, data, PS_MAX_U64);
         break;
-    case PS_DATA_F32:
-      isNaN = isnan(*((psF32 *) data));
-      break;
-    case PS_DATA_F64:
-      isNaN = isnan(*((psF64 *) data));
-      break;
-    case PS_DATA_BOOL:
-        // XXX: what is NaN for a bool?
-        isNaN = PS_IS_NAN(psU8, data, PS_MAX_U8);
+      case PS_DATA_F32:
+	isNaN = !isfinite(*((psF32 *) data)); // trap nan, +inf, -inf
+	break;
+      case PS_DATA_F64:
+	isNaN = !isfinite(*((psF64 *) data)); // trap nan, +inf, -inf
+	break;
+      case PS_DATA_BOOL:
+        isNaN = PS_IS_NAN(psU8, data, PS_MAX_U8); // probably meaningless
         break;
     }
