Index: trunk/psLib/src/astro/psTime.c
===================================================================
--- trunk/psLib/src/astro/psTime.c	(revision 7766)
+++ trunk/psLib/src/astro/psTime.c	(revision 7942)
@@ -10,6 +10,6 @@
  *  @author Ross Harman, MHPCC
  *
- *  @version $Revision: 1.90 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-06-30 02:20:06 $
+ *  @version $Revision: 1.91 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-07-20 12:59:07 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -387,4 +387,5 @@
 
     // Read time tables
+    bool no_problem = true;  // True if we've detected no errors
     namesPtr = tableNames;
     while((tableName=getToken(&namesPtr, " ", &status)) != NULL) {
@@ -403,6 +404,7 @@
         tableFormat = getToken(&formatPtr,",",&status);
         if(tableFormat == NULL) {
-            psError(PS_ERR_BAD_PARAMETER_VALUE,true,PS_ERRORTEXT_psTime_LOOKUP_METADATA_FAILED,
+            psError(PS_ERR_BAD_PARAMETER_VALUE,no_problem,PS_ERRORTEXT_psTime_LOOKUP_METADATA_FAILED,
                     "psLib.time.tables.format");
+            no_problem = false;
         }
 
@@ -412,5 +414,7 @@
             numLines = psLookupTableRead(table);
         } else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psTime_BAD_TABLE_COUNT, i+1, numTables);
+            psError(PS_ERR_BAD_PARAMETER_VALUE, no_problem,
+                    PS_ERRORTEXT_psTime_BAD_TABLE_COUNT, i+1, numTables);
+            no_problem = false;
         }
 
@@ -424,5 +428,7 @@
                 foundTable = true;
             } else if(foundTable==false && j==numTables-1) {
-                psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psTime_BAD_TABLE_COUNT, j, numTables);
+                psError(PS_ERR_BAD_PARAMETER_VALUE, no_problem,
+                        PS_ERRORTEXT_psTime_BAD_TABLE_COUNT, j, numTables);
+                no_problem = false;
             }
         }
@@ -438,5 +444,5 @@
 
     if(numTables != i) {
-        psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psTime_BAD_TABLE_COUNT, i, numTables);
+        psError(PS_ERR_BAD_PARAMETER_VALUE, no_problem, PS_ERRORTEXT_psTime_BAD_TABLE_COUNT, i, numTables);
     }
 
@@ -448,5 +454,5 @@
     psFree(tableFormats);
 
-    return true;
+    return no_problem;
 }
 
@@ -698,6 +704,5 @@
     if(time->type == PS_TIME_UT1) {
         psError(PS_ERR_BAD_PARAMETER_VALUE,true,"Cannot convert from UT1 time type");
-        //        return NULL;
-        return time;
+        return NULL;
     }
 
@@ -724,4 +729,5 @@
         } else {
             psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psTime_TYPE_UNKNOWN, type);
+            return NULL;
         }
         // Convert from TT to TAI, UTC, UT1
@@ -748,4 +754,5 @@
         } else {
             psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psTime_TYPE_UNKNOWN, type);
+            return NULL;
         }
         // Convert from UTC to TAI, TT, UT1
@@ -766,8 +773,10 @@
         } else {
             psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psTime_TYPE_UNKNOWN, type);
+            return NULL;
         }
         // Convert unknown time type
     } else {
         psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psTime_TYPE_UNKNOWN, time->type);
+        return NULL;
     }
 
@@ -1065,9 +1074,16 @@
 
         // Date too earlier for tables. Get default polar coodinate values from metadata, and issue warning.
+        #if 0
         psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psTime_TIME_PREDATES_TABLES, mjd, "polar motion");
+        return NULL;
+        #else
+
+        psLogMsg(PS_FILE_LINE, PS_LOG_ERROR, PS_ERRORTEXT_psTime_TIME_PREDATES_TABLES, mjd, "polar motion");
+        #endif
 
         tableMetadataItem = psMetadataLookup(timeMetadata, "psLib.time.before.xp");
         if(tableMetadataItem == NULL) {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psTime_LOOKUP_METADATA_FAILED, "psLib.time.before.xp");
+            psError(PS_ERR_BAD_PARAMETER_VALUE, true,
+                    PS_ERRORTEXT_psTime_LOOKUP_METADATA_FAILED, "psLib.time.before.xp");
             return NULL;
         }
@@ -1092,5 +1108,13 @@
               c = 2*pi*(mjd - pslib.time.predict.mjd)/435.0
         */
-        psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psTime_TIME_POSTDATES_TABLES, mjd, "polar motion");
+        #if 0
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true,
+                PS_ERRORTEXT_psTime_TIME_POSTDATES_TABLES, mjd, "polar motion");
+        return NULL;
+        #else
+
+        psLogMsg(PS_FILE_LINE, PS_LOG_ERROR,
+                 PS_ERRORTEXT_psTime_TIME_POSTDATES_TABLES, mjd, "polar motion");
+        #endif
 
         // Get predicted MJD
@@ -1171,5 +1195,5 @@
         psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psTime_FILE_NOT_FOUND,
                 p_psGetConfigFileName());
-        return 0.0;
+        return NAN;
     }
 
@@ -1178,5 +1202,5 @@
     if(tableMetadataItem == NULL) {
         psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psTime_LOOKUP_METADATA_FAILED, "taiTable");
-        return 0.0;
+        return NAN;
     }
     table = (psLookupTable*)tableMetadataItem->data.V;
@@ -1205,4 +1229,5 @@
     if(results == NULL) {
         psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psTime_INTERPOLATION_FAILED);
+        return NAN;
     }
 
@@ -1347,4 +1372,5 @@
     if (!strftime(tempString, MAX_TIME_STRING_LENGTH, "%Y-%m-%dT%H:%M:%S", tmTime)) {
         psError(PS_ERR_OS_CALL_FAILED, true, PS_ERRORTEXT_psTime_CONVERT_TIME_TO_STRING_FAILED);
+        return NULL;
     }
     psFree(tmTime);
@@ -1360,4 +1386,5 @@
     if (snprintf(timeString, MAX_TIME_STRING_LENGTH, "%s.%1dZ", tempString, ds) < 0) {
         psError(PS_ERR_OS_CALL_FAILED, true, PS_ERRORTEXT_psTime_APPEND_MSEC_FAILED);
+        return NULL;
     }
     psFree(tempString);
@@ -1699,5 +1726,4 @@
                    const psTime *time2)
 {
-    psF64 out = 0.0;
     psF64 uSec1 = 0.0;
     psF64 uSec2 = 0.0;
@@ -1714,5 +1740,5 @@
     if(time1->type != time2->type) {
         psError(PS_ERR_BAD_PARAMETER_VALUE,true,PS_ERRORTEXT_psTime_TYPE_INCORRECT,time1->type);
-        return out;
+        return NAN;
     }
 
@@ -1739,5 +1765,5 @@
     uSec2 = tempTime2->sec >= 0 ? 1.0 : -1.0;
     uSec2 = uSec2*tempTime2->nsec/1e9;
-    out = (tempTime1->sec-tempTime2->sec) + (uSec1-uSec2);
+    psF64 out = (tempTime1->sec-tempTime2->sec) + (uSec1-uSec2);
 
     psFree(tempTime1);
