Index: /trunk/ippdb/src/ippdb.c
===================================================================
--- /trunk/ippdb/src/ippdb.c	(revision 15791)
+++ /trunk/ippdb/src/ippdb.c	(revision 15792)
@@ -486,4 +486,10 @@
     for (i = 0; i < rowSet->n; i++) {
         pzDataStoreRow *object = pzDataStoreObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -891,4 +897,10 @@
     for (i = 0; i < rowSet->n; i++) {
         summitExpRow *object = summitExpObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -1340,4 +1352,10 @@
     for (i = 0; i < rowSet->n; i++) {
         summitImfileRow *object = summitImfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -1658,4 +1676,10 @@
     for (i = 0; i < rowSet->n; i++) {
         pzPendingExpRow *object = pzPendingExpObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -2020,4 +2044,10 @@
     for (i = 0; i < rowSet->n; i++) {
         pzPendingImfileRow *object = pzPendingImfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -2338,4 +2368,10 @@
     for (i = 0; i < rowSet->n; i++) {
         pzDoneExpRow *object = pzDoneExpObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -2722,4 +2758,10 @@
     for (i = 0; i < rowSet->n; i++) {
         pzDoneImfileRow *object = pzDoneImfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -3149,4 +3191,10 @@
     for (i = 0; i < rowSet->n; i++) {
         newExpRow *object = newExpObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -3466,4 +3514,10 @@
     for (i = 0; i < rowSet->n; i++) {
         newImfileRow *object = newImfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -3559,5 +3613,5 @@
 static void rawExpRowFree(rawExpRow *object);
 
-rawExpRow *rawExpRowAlloc(psS64 exp_id, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *exp_tag, const char *exp_type, const char *filelevel, const char *workdir, const char *reduction, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF32 sat_pixel_frac, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, psF32 M1_x, psF32 M1_y, psF32 M1_z, psF32 M1_tip, psF32 M1_tilt, psF32 M2_x, psF32 M2_y, psF32 M2_z, psF32 M2_tip, psF32 M2_tilt, psF32 env_temperature, psF32 env_humidity, psF32 env_wind_speed, psF32 env_wind_dir, psF32 pon_time, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psF32 solang, psS16 fault)
+rawExpRow *rawExpRowAlloc(psS64 exp_id, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *exp_tag, const char *exp_type, const char *filelevel, const char *workdir, const char *reduction, const char *filter, const char *comment, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF32 sat_pixel_frac, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, psF32 m1_x, psF32 m1_y, psF32 m1_z, psF32 m1_tip, psF32 m1_tilt, psF32 m2_x, psF32 m2_y, psF32 m2_z, psF32 m2_tip, psF32 m2_tilt, psF32 env_temperature, psF32 env_humidity, psF32 env_wind_speed, psF32 env_wind_dir, psF32 teltemp_m1, psF32 teltemp_m1cell, psF32 teltemp_m2, psF32 teltemp_spider, psF32 teltemp_truss, psF32 teltemp_extra, psF32 pon_time, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psF32 solang, psS16 fault)
 {
     rawExpRow       *_object;
@@ -3577,4 +3631,5 @@
     _object->reduction = psStringCopy(reduction);
     _object->filter = psStringCopy(filter);
+    _object->comment = psStringCopy(comment);
     _object->airmass = airmass;
     _object->ra = ra;
@@ -3589,18 +3644,24 @@
     _object->ccd_temp = ccd_temp;
     _object->posang = posang;
-    _object->M1_x = M1_x;
-    _object->M1_y = M1_y;
-    _object->M1_z = M1_z;
-    _object->M1_tip = M1_tip;
-    _object->M1_tilt = M1_tilt;
-    _object->M2_x = M2_x;
-    _object->M2_y = M2_y;
-    _object->M2_z = M2_z;
-    _object->M2_tip = M2_tip;
-    _object->M2_tilt = M2_tilt;
+    _object->m1_x = m1_x;
+    _object->m1_y = m1_y;
+    _object->m1_z = m1_z;
+    _object->m1_tip = m1_tip;
+    _object->m1_tilt = m1_tilt;
+    _object->m2_x = m2_x;
+    _object->m2_y = m2_y;
+    _object->m2_z = m2_z;
+    _object->m2_tip = m2_tip;
+    _object->m2_tilt = m2_tilt;
     _object->env_temperature = env_temperature;
     _object->env_humidity = env_humidity;
     _object->env_wind_speed = env_wind_speed;
     _object->env_wind_dir = env_wind_dir;
+    _object->teltemp_m1 = teltemp_m1;
+    _object->teltemp_m1cell = teltemp_m1cell;
+    _object->teltemp_m2 = teltemp_m2;
+    _object->teltemp_spider = teltemp_spider;
+    _object->teltemp_truss = teltemp_truss;
+    _object->teltemp_extra = teltemp_extra;
     _object->pon_time = pon_time;
     _object->user_1 = user_1;
@@ -3628,4 +3689,5 @@
     psFree(object->reduction);
     psFree(object->filter);
+    psFree(object->comment);
     psFree(object->object);
 }
@@ -3689,4 +3751,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "comment", PS_DATA_STRING, NULL, "80")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item comment");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "airmass", PS_DATA_F32, NULL, 0.0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
@@ -3749,51 +3816,51 @@
         return false;
     }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_x", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_x");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_y", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_y");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_z", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_z");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_tip", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_tip");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_tilt", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_tilt");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_x", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_x");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_y", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_y");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_z", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_z");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_tip", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_tip");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_tilt", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_tilt");
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_x", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_x");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_y", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_y");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_z", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_z");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_tip", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_tip");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_tilt", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_tilt");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_x", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_x");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_y", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_y");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_z", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_z");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_tip", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_tip");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_tilt", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_tilt");
         psFree(md);
         return false;
@@ -3819,4 +3886,34 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m1", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m1cell", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m1cell");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m2", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_spider", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_spider");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_truss", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_truss");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_extra", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_extra");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "pon_time", PS_DATA_F32, NULL, 0.0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item pon_time");
@@ -3877,5 +3974,5 @@
 }
 
-bool rawExpInsert(psDB * dbh, psS64 exp_id, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *exp_tag, const char *exp_type, const char *filelevel, const char *workdir, const char *reduction, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF32 sat_pixel_frac, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, psF32 M1_x, psF32 M1_y, psF32 M1_z, psF32 M1_tip, psF32 M1_tilt, psF32 M2_x, psF32 M2_y, psF32 M2_z, psF32 M2_tip, psF32 M2_tilt, psF32 env_temperature, psF32 env_humidity, psF32 env_wind_speed, psF32 env_wind_dir, psF32 pon_time, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psF32 solang, psS16 fault)
+bool rawExpInsert(psDB * dbh, psS64 exp_id, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *exp_tag, const char *exp_type, const char *filelevel, const char *workdir, const char *reduction, const char *filter, const char *comment, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF32 sat_pixel_frac, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, psF32 m1_x, psF32 m1_y, psF32 m1_z, psF32 m1_tip, psF32 m1_tilt, psF32 m2_x, psF32 m2_y, psF32 m2_z, psF32 m2_tip, psF32 m2_tilt, psF32 env_temperature, psF32 env_humidity, psF32 env_wind_speed, psF32 env_wind_dir, psF32 teltemp_m1, psF32 teltemp_m1cell, psF32 teltemp_m2, psF32 teltemp_spider, psF32 teltemp_truss, psF32 teltemp_extra, psF32 pon_time, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psF32 solang, psS16 fault)
 {
     psMetadata *md = psMetadataAlloc();
@@ -3935,4 +4032,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "comment", PS_DATA_STRING, NULL, comment)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item comment");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "airmass", PS_DATA_F32, NULL, airmass)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
@@ -3995,51 +4097,51 @@
         return false;
     }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_x", PS_DATA_F32, NULL, M1_x)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_x");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_y", PS_DATA_F32, NULL, M1_y)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_y");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_z", PS_DATA_F32, NULL, M1_z)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_z");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_tip", PS_DATA_F32, NULL, M1_tip)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_tip");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_tilt", PS_DATA_F32, NULL, M1_tilt)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_tilt");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_x", PS_DATA_F32, NULL, M2_x)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_x");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_y", PS_DATA_F32, NULL, M2_y)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_y");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_z", PS_DATA_F32, NULL, M2_z)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_z");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_tip", PS_DATA_F32, NULL, M2_tip)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_tip");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_tilt", PS_DATA_F32, NULL, M2_tilt)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_tilt");
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_x", PS_DATA_F32, NULL, m1_x)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_x");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_y", PS_DATA_F32, NULL, m1_y)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_y");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_z", PS_DATA_F32, NULL, m1_z)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_z");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_tip", PS_DATA_F32, NULL, m1_tip)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_tip");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_tilt", PS_DATA_F32, NULL, m1_tilt)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_tilt");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_x", PS_DATA_F32, NULL, m2_x)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_x");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_y", PS_DATA_F32, NULL, m2_y)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_y");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_z", PS_DATA_F32, NULL, m2_z)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_z");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_tip", PS_DATA_F32, NULL, m2_tip)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_tip");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_tilt", PS_DATA_F32, NULL, m2_tilt)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_tilt");
         psFree(md);
         return false;
@@ -4062,4 +4164,34 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "env_wind_dir", PS_DATA_F32, NULL, env_wind_dir)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item env_wind_dir");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m1", PS_DATA_F32, NULL, teltemp_m1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m1cell", PS_DATA_F32, NULL, teltemp_m1cell)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m1cell");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m2", PS_DATA_F32, NULL, teltemp_m2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_spider", PS_DATA_F32, NULL, teltemp_spider)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_spider");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_truss", PS_DATA_F32, NULL, teltemp_truss)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_truss");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_extra", PS_DATA_F32, NULL, teltemp_extra)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_extra");
         psFree(md);
         return false;
@@ -4133,5 +4265,5 @@
 bool rawExpInsertObject(psDB *dbh, rawExpRow *object)
 {
-    return rawExpInsert(dbh, object->exp_id, object->exp_name, object->camera, object->telescope, object->dateobs, object->exp_tag, object->exp_type, object->filelevel, object->workdir, object->reduction, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->sat_pixel_frac, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang, object->M1_x, object->M1_y, object->M1_z, object->M1_tip, object->M1_tilt, object->M2_x, object->M2_y, object->M2_z, object->M2_tip, object->M2_tilt, object->env_temperature, object->env_humidity, object->env_wind_speed, object->env_wind_dir, object->pon_time, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->object, object->solang, object->fault);
+    return rawExpInsert(dbh, object->exp_id, object->exp_name, object->camera, object->telescope, object->dateobs, object->exp_tag, object->exp_type, object->filelevel, object->workdir, object->reduction, object->filter, object->comment, object->airmass, object->ra, object->decl, object->exp_time, object->sat_pixel_frac, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang, object->m1_x, object->m1_y, object->m1_z, object->m1_tip, object->m1_tilt, object->m2_x, object->m2_y, object->m2_z, object->m2_tip, object->m2_tilt, object->env_temperature, object->env_humidity, object->env_wind_speed, object->env_wind_dir, object->teltemp_m1, object->teltemp_m1cell, object->teltemp_m2, object->teltemp_spider, object->teltemp_truss, object->teltemp_extra, object->pon_time, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->object, object->solang, object->fault);
 }
 
@@ -4261,4 +4393,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "comment", PS_DATA_STRING, NULL, object->comment)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item comment");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "airmass", PS_DATA_F32, NULL, object->airmass)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
@@ -4321,51 +4458,51 @@
         return false;
     }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_x", PS_DATA_F32, NULL, object->M1_x)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_x");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_y", PS_DATA_F32, NULL, object->M1_y)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_y");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_z", PS_DATA_F32, NULL, object->M1_z)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_z");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_tip", PS_DATA_F32, NULL, object->M1_tip)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_tip");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_tilt", PS_DATA_F32, NULL, object->M1_tilt)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_tilt");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_x", PS_DATA_F32, NULL, object->M2_x)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_x");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_y", PS_DATA_F32, NULL, object->M2_y)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_y");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_z", PS_DATA_F32, NULL, object->M2_z)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_z");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_tip", PS_DATA_F32, NULL, object->M2_tip)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_tip");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_tilt", PS_DATA_F32, NULL, object->M2_tilt)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_tilt");
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_x", PS_DATA_F32, NULL, object->m1_x)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_x");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_y", PS_DATA_F32, NULL, object->m1_y)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_y");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_z", PS_DATA_F32, NULL, object->m1_z)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_z");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_tip", PS_DATA_F32, NULL, object->m1_tip)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_tip");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_tilt", PS_DATA_F32, NULL, object->m1_tilt)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_tilt");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_x", PS_DATA_F32, NULL, object->m2_x)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_x");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_y", PS_DATA_F32, NULL, object->m2_y)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_y");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_z", PS_DATA_F32, NULL, object->m2_z)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_z");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_tip", PS_DATA_F32, NULL, object->m2_tip)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_tip");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_tilt", PS_DATA_F32, NULL, object->m2_tilt)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_tilt");
         psFree(md);
         return false;
@@ -4391,4 +4528,34 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m1", PS_DATA_F32, NULL, object->teltemp_m1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m1cell", PS_DATA_F32, NULL, object->teltemp_m1cell)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m1cell");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m2", PS_DATA_F32, NULL, object->teltemp_m2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_spider", PS_DATA_F32, NULL, object->teltemp_spider)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_spider");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_truss", PS_DATA_F32, NULL, object->teltemp_truss)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_truss");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_extra", PS_DATA_F32, NULL, object->teltemp_extra)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_extra");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "pon_time", PS_DATA_F32, NULL, object->pon_time)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item pon_time");
@@ -4500,4 +4667,9 @@
         return false;
     }
+    char* comment = psMetadataLookupPtr(&status, md, "comment");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item comment");
+        return false;
+    }
     psF32 airmass = psMetadataLookupF32(&status, md, "airmass");
     if (!status) {
@@ -4560,52 +4732,52 @@
         return false;
     }
-    psF32 M1_x = psMetadataLookupF32(&status, md, "M1_x");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M1_x");
-        return false;
-    }
-    psF32 M1_y = psMetadataLookupF32(&status, md, "M1_y");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M1_y");
-        return false;
-    }
-    psF32 M1_z = psMetadataLookupF32(&status, md, "M1_z");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M1_z");
-        return false;
-    }
-    psF32 M1_tip = psMetadataLookupF32(&status, md, "M1_tip");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M1_tip");
-        return false;
-    }
-    psF32 M1_tilt = psMetadataLookupF32(&status, md, "M1_tilt");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M1_tilt");
-        return false;
-    }
-    psF32 M2_x = psMetadataLookupF32(&status, md, "M2_x");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M2_x");
-        return false;
-    }
-    psF32 M2_y = psMetadataLookupF32(&status, md, "M2_y");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M2_y");
-        return false;
-    }
-    psF32 M2_z = psMetadataLookupF32(&status, md, "M2_z");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M2_z");
-        return false;
-    }
-    psF32 M2_tip = psMetadataLookupF32(&status, md, "M2_tip");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M2_tip");
-        return false;
-    }
-    psF32 M2_tilt = psMetadataLookupF32(&status, md, "M2_tilt");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M2_tilt");
+    psF32 m1_x = psMetadataLookupF32(&status, md, "m1_x");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m1_x");
+        return false;
+    }
+    psF32 m1_y = psMetadataLookupF32(&status, md, "m1_y");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m1_y");
+        return false;
+    }
+    psF32 m1_z = psMetadataLookupF32(&status, md, "m1_z");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m1_z");
+        return false;
+    }
+    psF32 m1_tip = psMetadataLookupF32(&status, md, "m1_tip");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m1_tip");
+        return false;
+    }
+    psF32 m1_tilt = psMetadataLookupF32(&status, md, "m1_tilt");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m1_tilt");
+        return false;
+    }
+    psF32 m2_x = psMetadataLookupF32(&status, md, "m2_x");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m2_x");
+        return false;
+    }
+    psF32 m2_y = psMetadataLookupF32(&status, md, "m2_y");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m2_y");
+        return false;
+    }
+    psF32 m2_z = psMetadataLookupF32(&status, md, "m2_z");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m2_z");
+        return false;
+    }
+    psF32 m2_tip = psMetadataLookupF32(&status, md, "m2_tip");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m2_tip");
+        return false;
+    }
+    psF32 m2_tilt = psMetadataLookupF32(&status, md, "m2_tilt");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m2_tilt");
         return false;
     }
@@ -4630,4 +4802,34 @@
         return false;
     }
+    psF32 teltemp_m1 = psMetadataLookupF32(&status, md, "teltemp_m1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item teltemp_m1");
+        return false;
+    }
+    psF32 teltemp_m1cell = psMetadataLookupF32(&status, md, "teltemp_m1cell");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item teltemp_m1cell");
+        return false;
+    }
+    psF32 teltemp_m2 = psMetadataLookupF32(&status, md, "teltemp_m2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item teltemp_m2");
+        return false;
+    }
+    psF32 teltemp_spider = psMetadataLookupF32(&status, md, "teltemp_spider");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item teltemp_spider");
+        return false;
+    }
+    psF32 teltemp_truss = psMetadataLookupF32(&status, md, "teltemp_truss");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item teltemp_truss");
+        return false;
+    }
+    psF32 teltemp_extra = psMetadataLookupF32(&status, md, "teltemp_extra");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item teltemp_extra");
+        return false;
+    }
     psF32 pon_time = psMetadataLookupF32(&status, md, "pon_time");
     if (!status) {
@@ -4676,5 +4878,5 @@
     }
 
-    return rawExpRowAlloc(exp_id, exp_name, camera, telescope, dateobs, exp_tag, exp_type, filelevel, workdir, reduction, filter, airmass, ra, decl, exp_time, sat_pixel_frac, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang, M1_x, M1_y, M1_z, M1_tip, M1_tilt, M2_x, M2_y, M2_z, M2_tip, M2_tilt, env_temperature, env_humidity, env_wind_speed, env_wind_dir, pon_time, user_1, user_2, user_3, user_4, user_5, object, solang, fault);
+    return rawExpRowAlloc(exp_id, exp_name, camera, telescope, dateobs, exp_tag, exp_type, filelevel, workdir, reduction, filter, comment, airmass, ra, decl, exp_time, sat_pixel_frac, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang, m1_x, m1_y, m1_z, m1_tip, m1_tilt, m2_x, m2_y, m2_z, m2_tip, m2_tilt, env_temperature, env_humidity, env_wind_speed, env_wind_dir, teltemp_m1, teltemp_m1cell, teltemp_m2, teltemp_spider, teltemp_truss, teltemp_extra, pon_time, user_1, user_2, user_3, user_4, user_5, object, solang, fault);
 }
 psArray *rawExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -4695,4 +4897,10 @@
     for (i = 0; i < rowSet->n; i++) {
         rawExpRow *object = rawExpObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -4788,5 +4996,5 @@
 static void rawImfileRowFree(rawImfileRow *object);
 
-rawImfileRow *rawImfileRowAlloc(psS64 exp_id, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *tmp_class_id, const char *class_id, const char *uri, const char *exp_type, const char *filelevel, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF32 sat_pixel_frac, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, psF32 M1_x, psF32 M1_y, psF32 M1_z, psF32 M1_tip, psF32 M1_tilt, psF32 M2_x, psF32 M2_y, psF32 M2_z, psF32 M2_tip, psF32 M2_tilt, psF32 env_temperature, psF32 env_humidity, psF32 env_wind_speed, psF32 env_wind_dir, psF32 pon_time, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psS16 fault)
+rawImfileRow *rawImfileRowAlloc(psS64 exp_id, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *tmp_class_id, const char *class_id, const char *uri, const char *exp_type, const char *filelevel, const char *filter, const char *comment, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF32 sat_pixel_frac, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, psF32 m1_x, psF32 m1_y, psF32 m1_z, psF32 m1_tip, psF32 m1_tilt, psF32 m2_x, psF32 m2_y, psF32 m2_z, psF32 m2_tip, psF32 m2_tilt, psF32 env_temperature, psF32 env_humidity, psF32 env_wind_speed, psF32 env_wind_dir, psF32 teltemp_m1, psF32 teltemp_m1cell, psF32 teltemp_m2, psF32 teltemp_spider, psF32 teltemp_truss, psF32 teltemp_extra, psF32 pon_time, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psS16 fault)
 {
     rawImfileRow    *_object;
@@ -4806,4 +5014,5 @@
     _object->filelevel = psStringCopy(filelevel);
     _object->filter = psStringCopy(filter);
+    _object->comment = psStringCopy(comment);
     _object->airmass = airmass;
     _object->ra = ra;
@@ -4818,18 +5027,24 @@
     _object->ccd_temp = ccd_temp;
     _object->posang = posang;
-    _object->M1_x = M1_x;
-    _object->M1_y = M1_y;
-    _object->M1_z = M1_z;
-    _object->M1_tip = M1_tip;
-    _object->M1_tilt = M1_tilt;
-    _object->M2_x = M2_x;
-    _object->M2_y = M2_y;
-    _object->M2_z = M2_z;
-    _object->M2_tip = M2_tip;
-    _object->M2_tilt = M2_tilt;
+    _object->m1_x = m1_x;
+    _object->m1_y = m1_y;
+    _object->m1_z = m1_z;
+    _object->m1_tip = m1_tip;
+    _object->m1_tilt = m1_tilt;
+    _object->m2_x = m2_x;
+    _object->m2_y = m2_y;
+    _object->m2_z = m2_z;
+    _object->m2_tip = m2_tip;
+    _object->m2_tilt = m2_tilt;
     _object->env_temperature = env_temperature;
     _object->env_humidity = env_humidity;
     _object->env_wind_speed = env_wind_speed;
     _object->env_wind_dir = env_wind_dir;
+    _object->teltemp_m1 = teltemp_m1;
+    _object->teltemp_m1cell = teltemp_m1cell;
+    _object->teltemp_m2 = teltemp_m2;
+    _object->teltemp_spider = teltemp_spider;
+    _object->teltemp_truss = teltemp_truss;
+    _object->teltemp_extra = teltemp_extra;
     _object->pon_time = pon_time;
     _object->user_1 = user_1;
@@ -4856,4 +5071,5 @@
     psFree(object->filelevel);
     psFree(object->filter);
+    psFree(object->comment);
     psFree(object->object);
 }
@@ -4917,4 +5133,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "comment", PS_DATA_STRING, NULL, "80")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item comment");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "airmass", PS_DATA_F32, NULL, 0.0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
@@ -4977,51 +5198,51 @@
         return false;
     }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_x", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_x");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_y", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_y");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_z", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_z");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_tip", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_tip");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_tilt", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_tilt");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_x", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_x");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_y", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_y");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_z", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_z");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_tip", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_tip");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_tilt", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_tilt");
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_x", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_x");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_y", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_y");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_z", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_z");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_tip", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_tip");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_tilt", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_tilt");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_x", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_x");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_y", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_y");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_z", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_z");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_tip", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_tip");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_tilt", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_tilt");
         psFree(md);
         return false;
@@ -5047,4 +5268,34 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m1", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m1cell", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m1cell");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m2", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_spider", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_spider");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_truss", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_truss");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_extra", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_extra");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "pon_time", PS_DATA_F32, NULL, 0.0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item pon_time");
@@ -5100,5 +5351,5 @@
 }
 
-bool rawImfileInsert(psDB * dbh, psS64 exp_id, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *tmp_class_id, const char *class_id, const char *uri, const char *exp_type, const char *filelevel, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF32 sat_pixel_frac, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, psF32 M1_x, psF32 M1_y, psF32 M1_z, psF32 M1_tip, psF32 M1_tilt, psF32 M2_x, psF32 M2_y, psF32 M2_z, psF32 M2_tip, psF32 M2_tilt, psF32 env_temperature, psF32 env_humidity, psF32 env_wind_speed, psF32 env_wind_dir, psF32 pon_time, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psS16 fault)
+bool rawImfileInsert(psDB * dbh, psS64 exp_id, const char *exp_name, const char *camera, const char *telescope, psTime* dateobs, const char *tmp_class_id, const char *class_id, const char *uri, const char *exp_type, const char *filelevel, const char *filter, const char *comment, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF32 sat_pixel_frac, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, psF32 m1_x, psF32 m1_y, psF32 m1_z, psF32 m1_tip, psF32 m1_tilt, psF32 m2_x, psF32 m2_y, psF32 m2_z, psF32 m2_tip, psF32 m2_tilt, psF32 env_temperature, psF32 env_humidity, psF32 env_wind_speed, psF32 env_wind_dir, psF32 teltemp_m1, psF32 teltemp_m1cell, psF32 teltemp_m2, psF32 teltemp_spider, psF32 teltemp_truss, psF32 teltemp_extra, psF32 pon_time, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psS16 fault)
 {
     psMetadata *md = psMetadataAlloc();
@@ -5158,4 +5409,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "comment", PS_DATA_STRING, NULL, comment)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item comment");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "airmass", PS_DATA_F32, NULL, airmass)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
@@ -5218,51 +5474,51 @@
         return false;
     }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_x", PS_DATA_F32, NULL, M1_x)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_x");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_y", PS_DATA_F32, NULL, M1_y)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_y");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_z", PS_DATA_F32, NULL, M1_z)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_z");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_tip", PS_DATA_F32, NULL, M1_tip)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_tip");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_tilt", PS_DATA_F32, NULL, M1_tilt)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_tilt");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_x", PS_DATA_F32, NULL, M2_x)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_x");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_y", PS_DATA_F32, NULL, M2_y)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_y");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_z", PS_DATA_F32, NULL, M2_z)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_z");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_tip", PS_DATA_F32, NULL, M2_tip)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_tip");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_tilt", PS_DATA_F32, NULL, M2_tilt)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_tilt");
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_x", PS_DATA_F32, NULL, m1_x)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_x");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_y", PS_DATA_F32, NULL, m1_y)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_y");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_z", PS_DATA_F32, NULL, m1_z)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_z");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_tip", PS_DATA_F32, NULL, m1_tip)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_tip");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_tilt", PS_DATA_F32, NULL, m1_tilt)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_tilt");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_x", PS_DATA_F32, NULL, m2_x)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_x");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_y", PS_DATA_F32, NULL, m2_y)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_y");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_z", PS_DATA_F32, NULL, m2_z)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_z");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_tip", PS_DATA_F32, NULL, m2_tip)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_tip");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_tilt", PS_DATA_F32, NULL, m2_tilt)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_tilt");
         psFree(md);
         return false;
@@ -5285,4 +5541,34 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "env_wind_dir", PS_DATA_F32, NULL, env_wind_dir)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item env_wind_dir");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m1", PS_DATA_F32, NULL, teltemp_m1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m1cell", PS_DATA_F32, NULL, teltemp_m1cell)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m1cell");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m2", PS_DATA_F32, NULL, teltemp_m2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_spider", PS_DATA_F32, NULL, teltemp_spider)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_spider");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_truss", PS_DATA_F32, NULL, teltemp_truss)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_truss");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_extra", PS_DATA_F32, NULL, teltemp_extra)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_extra");
         psFree(md);
         return false;
@@ -5351,5 +5637,5 @@
 bool rawImfileInsertObject(psDB *dbh, rawImfileRow *object)
 {
-    return rawImfileInsert(dbh, object->exp_id, object->exp_name, object->camera, object->telescope, object->dateobs, object->tmp_class_id, object->class_id, object->uri, object->exp_type, object->filelevel, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->sat_pixel_frac, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang, object->M1_x, object->M1_y, object->M1_z, object->M1_tip, object->M1_tilt, object->M2_x, object->M2_y, object->M2_z, object->M2_tip, object->M2_tilt, object->env_temperature, object->env_humidity, object->env_wind_speed, object->env_wind_dir, object->pon_time, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->object, object->fault);
+    return rawImfileInsert(dbh, object->exp_id, object->exp_name, object->camera, object->telescope, object->dateobs, object->tmp_class_id, object->class_id, object->uri, object->exp_type, object->filelevel, object->filter, object->comment, object->airmass, object->ra, object->decl, object->exp_time, object->sat_pixel_frac, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang, object->m1_x, object->m1_y, object->m1_z, object->m1_tip, object->m1_tilt, object->m2_x, object->m2_y, object->m2_z, object->m2_tip, object->m2_tilt, object->env_temperature, object->env_humidity, object->env_wind_speed, object->env_wind_dir, object->teltemp_m1, object->teltemp_m1cell, object->teltemp_m2, object->teltemp_spider, object->teltemp_truss, object->teltemp_extra, object->pon_time, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->object, object->fault);
 }
 
@@ -5479,4 +5765,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "comment", PS_DATA_STRING, NULL, object->comment)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item comment");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "airmass", PS_DATA_F32, NULL, object->airmass)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
@@ -5539,51 +5830,51 @@
         return false;
     }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_x", PS_DATA_F32, NULL, object->M1_x)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_x");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_y", PS_DATA_F32, NULL, object->M1_y)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_y");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_z", PS_DATA_F32, NULL, object->M1_z)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_z");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_tip", PS_DATA_F32, NULL, object->M1_tip)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_tip");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M1_tilt", PS_DATA_F32, NULL, object->M1_tilt)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M1_tilt");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_x", PS_DATA_F32, NULL, object->M2_x)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_x");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_y", PS_DATA_F32, NULL, object->M2_y)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_y");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_z", PS_DATA_F32, NULL, object->M2_z)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_z");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_tip", PS_DATA_F32, NULL, object->M2_tip)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_tip");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "M2_tilt", PS_DATA_F32, NULL, object->M2_tilt)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item M2_tilt");
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_x", PS_DATA_F32, NULL, object->m1_x)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_x");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_y", PS_DATA_F32, NULL, object->m1_y)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_y");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_z", PS_DATA_F32, NULL, object->m1_z)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_z");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_tip", PS_DATA_F32, NULL, object->m1_tip)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_tip");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m1_tilt", PS_DATA_F32, NULL, object->m1_tilt)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m1_tilt");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_x", PS_DATA_F32, NULL, object->m2_x)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_x");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_y", PS_DATA_F32, NULL, object->m2_y)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_y");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_z", PS_DATA_F32, NULL, object->m2_z)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_z");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_tip", PS_DATA_F32, NULL, object->m2_tip)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_tip");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "m2_tilt", PS_DATA_F32, NULL, object->m2_tilt)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item m2_tilt");
         psFree(md);
         return false;
@@ -5609,4 +5900,34 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m1", PS_DATA_F32, NULL, object->teltemp_m1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m1cell", PS_DATA_F32, NULL, object->teltemp_m1cell)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m1cell");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_m2", PS_DATA_F32, NULL, object->teltemp_m2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_m2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_spider", PS_DATA_F32, NULL, object->teltemp_spider)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_spider");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_truss", PS_DATA_F32, NULL, object->teltemp_truss)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_truss");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "teltemp_extra", PS_DATA_F32, NULL, object->teltemp_extra)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item teltemp_extra");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "pon_time", PS_DATA_F32, NULL, object->pon_time)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item pon_time");
@@ -5713,4 +6034,9 @@
         return false;
     }
+    char* comment = psMetadataLookupPtr(&status, md, "comment");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item comment");
+        return false;
+    }
     psF32 airmass = psMetadataLookupF32(&status, md, "airmass");
     if (!status) {
@@ -5773,52 +6099,52 @@
         return false;
     }
-    psF32 M1_x = psMetadataLookupF32(&status, md, "M1_x");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M1_x");
-        return false;
-    }
-    psF32 M1_y = psMetadataLookupF32(&status, md, "M1_y");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M1_y");
-        return false;
-    }
-    psF32 M1_z = psMetadataLookupF32(&status, md, "M1_z");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M1_z");
-        return false;
-    }
-    psF32 M1_tip = psMetadataLookupF32(&status, md, "M1_tip");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M1_tip");
-        return false;
-    }
-    psF32 M1_tilt = psMetadataLookupF32(&status, md, "M1_tilt");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M1_tilt");
-        return false;
-    }
-    psF32 M2_x = psMetadataLookupF32(&status, md, "M2_x");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M2_x");
-        return false;
-    }
-    psF32 M2_y = psMetadataLookupF32(&status, md, "M2_y");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M2_y");
-        return false;
-    }
-    psF32 M2_z = psMetadataLookupF32(&status, md, "M2_z");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M2_z");
-        return false;
-    }
-    psF32 M2_tip = psMetadataLookupF32(&status, md, "M2_tip");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M2_tip");
-        return false;
-    }
-    psF32 M2_tilt = psMetadataLookupF32(&status, md, "M2_tilt");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item M2_tilt");
+    psF32 m1_x = psMetadataLookupF32(&status, md, "m1_x");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m1_x");
+        return false;
+    }
+    psF32 m1_y = psMetadataLookupF32(&status, md, "m1_y");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m1_y");
+        return false;
+    }
+    psF32 m1_z = psMetadataLookupF32(&status, md, "m1_z");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m1_z");
+        return false;
+    }
+    psF32 m1_tip = psMetadataLookupF32(&status, md, "m1_tip");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m1_tip");
+        return false;
+    }
+    psF32 m1_tilt = psMetadataLookupF32(&status, md, "m1_tilt");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m1_tilt");
+        return false;
+    }
+    psF32 m2_x = psMetadataLookupF32(&status, md, "m2_x");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m2_x");
+        return false;
+    }
+    psF32 m2_y = psMetadataLookupF32(&status, md, "m2_y");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m2_y");
+        return false;
+    }
+    psF32 m2_z = psMetadataLookupF32(&status, md, "m2_z");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m2_z");
+        return false;
+    }
+    psF32 m2_tip = psMetadataLookupF32(&status, md, "m2_tip");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m2_tip");
+        return false;
+    }
+    psF32 m2_tilt = psMetadataLookupF32(&status, md, "m2_tilt");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item m2_tilt");
         return false;
     }
@@ -5843,4 +6169,34 @@
         return false;
     }
+    psF32 teltemp_m1 = psMetadataLookupF32(&status, md, "teltemp_m1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item teltemp_m1");
+        return false;
+    }
+    psF32 teltemp_m1cell = psMetadataLookupF32(&status, md, "teltemp_m1cell");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item teltemp_m1cell");
+        return false;
+    }
+    psF32 teltemp_m2 = psMetadataLookupF32(&status, md, "teltemp_m2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item teltemp_m2");
+        return false;
+    }
+    psF32 teltemp_spider = psMetadataLookupF32(&status, md, "teltemp_spider");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item teltemp_spider");
+        return false;
+    }
+    psF32 teltemp_truss = psMetadataLookupF32(&status, md, "teltemp_truss");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item teltemp_truss");
+        return false;
+    }
+    psF32 teltemp_extra = psMetadataLookupF32(&status, md, "teltemp_extra");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item teltemp_extra");
+        return false;
+    }
     psF32 pon_time = psMetadataLookupF32(&status, md, "pon_time");
     if (!status) {
@@ -5884,5 +6240,5 @@
     }
 
-    return rawImfileRowAlloc(exp_id, exp_name, camera, telescope, dateobs, tmp_class_id, class_id, uri, exp_type, filelevel, filter, airmass, ra, decl, exp_time, sat_pixel_frac, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang, M1_x, M1_y, M1_z, M1_tip, M1_tilt, M2_x, M2_y, M2_z, M2_tip, M2_tilt, env_temperature, env_humidity, env_wind_speed, env_wind_dir, pon_time, user_1, user_2, user_3, user_4, user_5, object, fault);
+    return rawImfileRowAlloc(exp_id, exp_name, camera, telescope, dateobs, tmp_class_id, class_id, uri, exp_type, filelevel, filter, comment, airmass, ra, decl, exp_time, sat_pixel_frac, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang, m1_x, m1_y, m1_z, m1_tip, m1_tilt, m2_x, m2_y, m2_z, m2_tip, m2_tilt, env_temperature, env_humidity, env_wind_speed, env_wind_dir, teltemp_m1, teltemp_m1cell, teltemp_m2, teltemp_spider, teltemp_truss, teltemp_extra, pon_time, user_1, user_2, user_3, user_4, user_5, object, fault);
 }
 psArray *rawImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -5903,4 +6259,10 @@
     for (i = 0; i < rowSet->n; i++) {
         rawImfileRow *object = rawImfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -6219,4 +6581,10 @@
     for (i = 0; i < rowSet->n; i++) {
         guidePendingExpRow *object = guidePendingExpObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -6667,4 +7035,10 @@
     for (i = 0; i < rowSet->n; i++) {
         chipRunRow *object = chipRunObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -7426,4 +7800,10 @@
     for (i = 0; i < rowSet->n; i++) {
         chipProcessedImfileRow *object = chipProcessedImfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -7700,4 +8080,10 @@
     for (i = 0; i < rowSet->n; i++) {
         chipMaskRow *object = chipMaskObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -8148,4 +8534,10 @@
     for (i = 0; i < rowSet->n; i++) {
         camRunRow *object = camRunObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -8780,4 +9172,10 @@
     for (i = 0; i < rowSet->n; i++) {
         camProcessedExpRow *object = camProcessedExpObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -9054,4 +9452,10 @@
     for (i = 0; i < rowSet->n; i++) {
         camMaskRow *object = camMaskObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -9437,4 +9841,10 @@
     for (i = 0; i < rowSet->n; i++) {
         warpRunRow *object = warpRunObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -9752,4 +10162,10 @@
     for (i = 0; i < rowSet->n; i++) {
         warpInputExpRow *object = warpInputExpObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -10133,4 +10549,10 @@
     for (i = 0; i < rowSet->n; i++) {
         warpSkyCellMapRow *object = warpSkyCellMapObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -10599,4 +11021,10 @@
     for (i = 0; i < rowSet->n; i++) {
         warpSkyfileRow *object = warpSkyfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -11004,4 +11432,10 @@
     for (i = 0; i < rowSet->n; i++) {
         diffRunRow *object = diffRunObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -11406,4 +11840,10 @@
     for (i = 0; i < rowSet->n; i++) {
         diffInputSkyfileRow *object = diffInputSkyfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -11807,4 +12247,10 @@
     for (i = 0; i < rowSet->n; i++) {
         diffSkyfileRow *object = diffSkyfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -12212,4 +12658,10 @@
     for (i = 0; i < rowSet->n; i++) {
         stackRunRow *object = stackRunObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -12506,4 +12958,10 @@
     for (i = 0; i < rowSet->n; i++) {
         stackInputSkyfileRow *object = stackInputSkyfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -12907,4 +13365,10 @@
     for (i = 0; i < rowSet->n; i++) {
         stackSumSkyfileRow *object = stackSumSkyfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -13784,4 +14248,10 @@
     for (i = 0; i < rowSet->n; i++) {
         detRunRow *object = detRunObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -14120,4 +14590,10 @@
     for (i = 0; i < rowSet->n; i++) {
         detInputExpRow *object = detInputExpObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -14754,4 +15230,10 @@
     for (i = 0; i < rowSet->n; i++) {
         detProcessedImfileRow *object = detProcessedImfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -15344,4 +15826,10 @@
     for (i = 0; i < rowSet->n; i++) {
         detProcessedExpRow *object = detProcessedExpObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -15893,4 +16381,10 @@
     for (i = 0; i < rowSet->n; i++) {
         detStackedImfileRow *object = detStackedImfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -16251,4 +16745,10 @@
     for (i = 0; i < rowSet->n; i++) {
         detNormalizedStatImfileRow *object = detNormalizedStatImfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -16800,4 +17300,10 @@
     for (i = 0; i < rowSet->n; i++) {
         detNormalizedImfileRow *object = detNormalizedImfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -17327,4 +17833,10 @@
     for (i = 0; i < rowSet->n; i++) {
         detNormalizedExpRow *object = detNormalizedExpObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -18108,4 +18620,10 @@
     for (i = 0; i < rowSet->n; i++) {
         detResidImfileRow *object = detResidImfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -18866,4 +19384,10 @@
     for (i = 0; i < rowSet->n; i++) {
         detResidExpRow *object = detResidExpObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -19265,4 +19789,10 @@
     for (i = 0; i < rowSet->n; i++) {
         detRunSummaryRow *object = detRunSummaryObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -19814,4 +20344,10 @@
     for (i = 0; i < rowSet->n; i++) {
         detRegisteredImfileRow *object = detRegisteredImfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -20238,4 +20774,10 @@
     for (i = 0; i < rowSet->n; i++) {
         detCorrectedExpRow *object = detCorrectedExpObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -20619,4 +21161,10 @@
     for (i = 0; i < rowSet->n; i++) {
         detCorrectedImfileRow *object = detCorrectedImfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -21024,4 +21572,10 @@
     for (i = 0; i < rowSet->n; i++) {
         magicRunRow *object = magicRunObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -21340,4 +21894,10 @@
     for (i = 0; i < rowSet->n; i++) {
         magicInputSkyfileRow *object = magicInputSkyfileObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -21657,4 +22217,10 @@
     for (i = 0; i < rowSet->n; i++) {
         magicTreeRow *object = magicTreeObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -21974,4 +22540,10 @@
     for (i = 0; i < rowSet->n; i++) {
         magicNodeResultRow *object = magicNodeResultObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -22269,4 +22841,10 @@
     for (i = 0; i < rowSet->n; i++) {
         magicMaskRow *object = magicMaskObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -22585,4 +23163,10 @@
     for (i = 0; i < rowSet->n; i++) {
         magicSkyfileMaskRow *object = magicSkyfileMaskObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -22902,4 +23486,10 @@
     for (i = 0; i < rowSet->n; i++) {
         calDBRow *object = calDBObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -23241,4 +23831,10 @@
     for (i = 0; i < rowSet->n; i++) {
         calRunRow *object = calRunObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -23624,4 +24220,10 @@
     for (i = 0; i < rowSet->n; i++) {
         flatcorrRunRow *object = flatcorrRunObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -23918,4 +24520,10 @@
     for (i = 0; i < rowSet->n; i++) {
         flatcorrExpRow *object = flatcorrExpObjectFromMetadata(rowSet->data[i]);
+        if (!object) {
+            psFree(object);
+            psFree(returnSet);
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            return NULL;
+        }
         psArrayAdd(returnSet, 0, object);
         psFree(object);
Index: /trunk/ippdb/src/ippdb.h
===================================================================
--- /trunk/ippdb/src/ippdb.h	(revision 15791)
+++ /trunk/ippdb/src/ippdb.h	(revision 15792)
@@ -2011,4 +2011,5 @@
     char            *reduction;
     char            *filter;
+    char            *comment;
     psF32           airmass;
     psF64           ra;
@@ -2023,18 +2024,24 @@
     psF32           ccd_temp;
     psF64           posang;
-    psF32           M1_x;
-    psF32           M1_y;
-    psF32           M1_z;
-    psF32           M1_tip;
-    psF32           M1_tilt;
-    psF32           M2_x;
-    psF32           M2_y;
-    psF32           M2_z;
-    psF32           M2_tip;
-    psF32           M2_tilt;
+    psF32           m1_x;
+    psF32           m1_y;
+    psF32           m1_z;
+    psF32           m1_tip;
+    psF32           m1_tilt;
+    psF32           m2_x;
+    psF32           m2_y;
+    psF32           m2_z;
+    psF32           m2_tip;
+    psF32           m2_tilt;
     psF32           env_temperature;
     psF32           env_humidity;
     psF32           env_wind_speed;
     psF32           env_wind_dir;
+    psF32           teltemp_m1;
+    psF32           teltemp_m1cell;
+    psF32           teltemp_m2;
+    psF32           teltemp_spider;
+    psF32           teltemp_truss;
+    psF32           teltemp_extra;
     psF32           pon_time;
     psF64           user_1;
@@ -2065,4 +2072,5 @@
     const char      *reduction,
     const char      *filter,
+    const char      *comment,
     psF32           airmass,
     psF64           ra,
@@ -2077,18 +2085,24 @@
     psF32           ccd_temp,
     psF64           posang,
-    psF32           M1_x,
-    psF32           M1_y,
-    psF32           M1_z,
-    psF32           M1_tip,
-    psF32           M1_tilt,
-    psF32           M2_x,
-    psF32           M2_y,
-    psF32           M2_z,
-    psF32           M2_tip,
-    psF32           M2_tilt,
+    psF32           m1_x,
+    psF32           m1_y,
+    psF32           m1_z,
+    psF32           m1_tip,
+    psF32           m1_tilt,
+    psF32           m2_x,
+    psF32           m2_y,
+    psF32           m2_z,
+    psF32           m2_tip,
+    psF32           m2_tilt,
     psF32           env_temperature,
     psF32           env_humidity,
     psF32           env_wind_speed,
     psF32           env_wind_dir,
+    psF32           teltemp_m1,
+    psF32           teltemp_m1cell,
+    psF32           teltemp_m2,
+    psF32           teltemp_spider,
+    psF32           teltemp_truss,
+    psF32           teltemp_extra,
     psF32           pon_time,
     psF64           user_1,
@@ -2140,4 +2154,5 @@
     const char      *reduction,
     const char      *filter,
+    const char      *comment,
     psF32           airmass,
     psF64           ra,
@@ -2152,18 +2167,24 @@
     psF32           ccd_temp,
     psF64           posang,
-    psF32           M1_x,
-    psF32           M1_y,
-    psF32           M1_z,
-    psF32           M1_tip,
-    psF32           M1_tilt,
-    psF32           M2_x,
-    psF32           M2_y,
-    psF32           M2_z,
-    psF32           M2_tip,
-    psF32           M2_tilt,
+    psF32           m1_x,
+    psF32           m1_y,
+    psF32           m1_z,
+    psF32           m1_tip,
+    psF32           m1_tilt,
+    psF32           m2_x,
+    psF32           m2_y,
+    psF32           m2_z,
+    psF32           m2_tip,
+    psF32           m2_tilt,
     psF32           env_temperature,
     psF32           env_humidity,
     psF32           env_wind_speed,
     psF32           env_wind_dir,
+    psF32           teltemp_m1,
+    psF32           teltemp_m1cell,
+    psF32           teltemp_m2,
+    psF32           teltemp_spider,
+    psF32           teltemp_truss,
+    psF32           teltemp_extra,
     psF32           pon_time,
     psF64           user_1,
@@ -2341,4 +2362,5 @@
     char            *filelevel;
     char            *filter;
+    char            *comment;
     psF32           airmass;
     psF64           ra;
@@ -2353,18 +2375,24 @@
     psF32           ccd_temp;
     psF64           posang;
-    psF32           M1_x;
-    psF32           M1_y;
-    psF32           M1_z;
-    psF32           M1_tip;
-    psF32           M1_tilt;
-    psF32           M2_x;
-    psF32           M2_y;
-    psF32           M2_z;
-    psF32           M2_tip;
-    psF32           M2_tilt;
+    psF32           m1_x;
+    psF32           m1_y;
+    psF32           m1_z;
+    psF32           m1_tip;
+    psF32           m1_tilt;
+    psF32           m2_x;
+    psF32           m2_y;
+    psF32           m2_z;
+    psF32           m2_tip;
+    psF32           m2_tilt;
     psF32           env_temperature;
     psF32           env_humidity;
     psF32           env_wind_speed;
     psF32           env_wind_dir;
+    psF32           teltemp_m1;
+    psF32           teltemp_m1cell;
+    psF32           teltemp_m2;
+    psF32           teltemp_spider;
+    psF32           teltemp_truss;
+    psF32           teltemp_extra;
     psF32           pon_time;
     psF64           user_1;
@@ -2394,4 +2422,5 @@
     const char      *filelevel,
     const char      *filter,
+    const char      *comment,
     psF32           airmass,
     psF64           ra,
@@ -2406,18 +2435,24 @@
     psF32           ccd_temp,
     psF64           posang,
-    psF32           M1_x,
-    psF32           M1_y,
-    psF32           M1_z,
-    psF32           M1_tip,
-    psF32           M1_tilt,
-    psF32           M2_x,
-    psF32           M2_y,
-    psF32           M2_z,
-    psF32           M2_tip,
-    psF32           M2_tilt,
+    psF32           m1_x,
+    psF32           m1_y,
+    psF32           m1_z,
+    psF32           m1_tip,
+    psF32           m1_tilt,
+    psF32           m2_x,
+    psF32           m2_y,
+    psF32           m2_z,
+    psF32           m2_tip,
+    psF32           m2_tilt,
     psF32           env_temperature,
     psF32           env_humidity,
     psF32           env_wind_speed,
     psF32           env_wind_dir,
+    psF32           teltemp_m1,
+    psF32           teltemp_m1cell,
+    psF32           teltemp_m2,
+    psF32           teltemp_spider,
+    psF32           teltemp_truss,
+    psF32           teltemp_extra,
     psF32           pon_time,
     psF64           user_1,
@@ -2468,4 +2503,5 @@
     const char      *filelevel,
     const char      *filter,
+    const char      *comment,
     psF32           airmass,
     psF64           ra,
@@ -2480,18 +2516,24 @@
     psF32           ccd_temp,
     psF64           posang,
-    psF32           M1_x,
-    psF32           M1_y,
-    psF32           M1_z,
-    psF32           M1_tip,
-    psF32           M1_tilt,
-    psF32           M2_x,
-    psF32           M2_y,
-    psF32           M2_z,
-    psF32           M2_tip,
-    psF32           M2_tilt,
+    psF32           m1_x,
+    psF32           m1_y,
+    psF32           m1_z,
+    psF32           m1_tip,
+    psF32           m1_tilt,
+    psF32           m2_x,
+    psF32           m2_y,
+    psF32           m2_z,
+    psF32           m2_tip,
+    psF32           m2_tilt,
     psF32           env_temperature,
     psF32           env_humidity,
     psF32           env_wind_speed,
     psF32           env_wind_dir,
+    psF32           teltemp_m1,
+    psF32           teltemp_m1cell,
+    psF32           teltemp_m2,
+    psF32           teltemp_spider,
+    psF32           teltemp_truss,
+    psF32           teltemp_extra,
     psF32           pon_time,
     psF64           user_1,
Index: /trunk/ippdb/tests/alloc.c
===================================================================
--- /trunk/ippdb/tests/alloc.c	(revision 15791)
+++ /trunk/ippdb/tests/alloc.c	(revision 15792)
@@ -315,5 +315,5 @@
         rawExpRow       *object;
 
-        object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16    );
+        object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16    );
 
         if (!object) {
@@ -364,4 +364,8 @@
             exit(EXIT_FAILURE);
         }
+        if (strncmp(object->comment, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (!object->airmass == 32.32) {
             psFree(object);
@@ -412,41 +416,41 @@
             exit(EXIT_FAILURE);
         }
-        if (!object->M1_x == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_y == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_z == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_tip == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_tilt == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_x == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_y == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_z == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_tip == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_tilt == 32.32) {
+        if (!object->m1_x == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_y == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_z == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_tip == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_tilt == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_x == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_y == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_z == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_tip == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_tilt == 32.32) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -468,4 +472,28 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->teltemp_m1 == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_m1cell == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_m2 == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_spider == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_truss == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_extra == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (!object->pon_time == 32.32) {
             psFree(object);
@@ -511,5 +539,5 @@
         rawImfileRow    *object;
 
-        object = rawImfileRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
+        object = rawImfileRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
 
         if (!object) {
@@ -560,4 +588,8 @@
             exit(EXIT_FAILURE);
         }
+        if (strncmp(object->comment, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (!object->airmass == 32.32) {
             psFree(object);
@@ -608,41 +640,41 @@
             exit(EXIT_FAILURE);
         }
-        if (!object->M1_x == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_y == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_z == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_tip == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_tilt == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_x == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_y == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_z == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_tip == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_tilt == 32.32) {
+        if (!object->m1_x == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_y == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_z == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_tip == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_tilt == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_x == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_y == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_z == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_tip == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_tilt == 32.32) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -661,4 +693,28 @@
         }
         if (!object->env_wind_dir == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_m1 == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_m1cell == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_m2 == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_spider == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_truss == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_extra == 32.32) {
             psFree(object);
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/insert.c
===================================================================
--- /trunk/ippdb/tests/insert.c	(revision 15791)
+++ /trunk/ippdb/tests/insert.c	(revision 15792)
@@ -148,20 +148,20 @@
         }
 
-        if (!rawExpInsert(dbh, -64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!rawImfileInsert(dbh, -64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16)) {
+        if (!rawExpInsert(dbh, -64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16)) {
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+
+        dbh = psDBInit("localhost", "test", NULL, "test");
+        if (!dbh) {
+            exit(EXIT_FAILURE);
+        }
+
+        if (!rawImfileInsert(dbh, -64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16)) {
             exit(EXIT_FAILURE);
         }
Index: /trunk/ippdb/tests/insertobject.c
===================================================================
--- /trunk/ippdb/tests/insertobject.c	(revision 15791)
+++ /trunk/ippdb/tests/insertobject.c	(revision 15792)
@@ -212,5 +212,5 @@
         }
 
-        object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16);
+        object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -234,5 +234,5 @@
         }
 
-        object = rawImfileRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
+        object = rawImfileRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
         if (!object) {
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/metadatafromobject.c
===================================================================
--- /trunk/ippdb/tests/metadatafromobject.c	(revision 15791)
+++ /trunk/ippdb/tests/metadatafromobject.c	(revision 15792)
@@ -387,5 +387,5 @@
         bool            status;
 
-        object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16);
+        object = rawExpRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -441,4 +441,8 @@
             exit(EXIT_FAILURE);
         }
+        if (strncmp(psMetadataLookupPtr(&status, md, "comment"), "a string", MAX_STRING_LENGTH)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataLookupF32(&status, md, "airmass") == 32.32) {
             psFree(md);
@@ -489,41 +493,41 @@
             exit(EXIT_FAILURE);
         }
-        if (!psMetadataLookupF32(&status, md, "M1_x") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M1_y") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M1_z") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M1_tip") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M1_tilt") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M2_x") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M2_y") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M2_z") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M2_tip") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M2_tilt") == 32.32) {
+        if (!psMetadataLookupF32(&status, md, "m1_x") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m1_y") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m1_z") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m1_tip") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m1_tilt") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m2_x") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m2_y") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m2_z") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m2_tip") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m2_tilt") == 32.32) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -545,4 +549,28 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataLookupF32(&status, md, "teltemp_m1") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "teltemp_m1cell") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "teltemp_m2") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "teltemp_spider") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "teltemp_truss") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "teltemp_extra") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataLookupF32(&status, md, "pon_time") == 32.32) {
             psFree(md);
@@ -589,5 +617,5 @@
         bool            status;
 
-        object = rawImfileRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
+        object = rawImfileRowAlloc(-64, "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -643,4 +671,8 @@
             exit(EXIT_FAILURE);
         }
+        if (strncmp(psMetadataLookupPtr(&status, md, "comment"), "a string", MAX_STRING_LENGTH)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataLookupF32(&status, md, "airmass") == 32.32) {
             psFree(md);
@@ -691,41 +723,41 @@
             exit(EXIT_FAILURE);
         }
-        if (!psMetadataLookupF32(&status, md, "M1_x") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M1_y") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M1_z") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M1_tip") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M1_tilt") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M2_x") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M2_y") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M2_z") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M2_tip") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "M2_tilt") == 32.32) {
+        if (!psMetadataLookupF32(&status, md, "m1_x") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m1_y") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m1_z") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m1_tip") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m1_tilt") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m2_x") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m2_y") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m2_z") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m2_tip") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "m2_tilt") == 32.32) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -744,4 +776,28 @@
         }
         if (!psMetadataLookupF32(&status, md, "env_wind_dir") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "teltemp_m1") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "teltemp_m1cell") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "teltemp_m2") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "teltemp_spider") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "teltemp_truss") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF32(&status, md, "teltemp_extra") == 32.32) {
             psFree(md);
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/objectfrommetadata.c
===================================================================
--- /trunk/ippdb/tests/objectfrommetadata.c	(revision 15791)
+++ /trunk/ippdb/tests/objectfrommetadata.c	(revision 15792)
@@ -587,4 +587,8 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "comment", 0, NULL, "a string")) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 32.32)) {
             psFree(md);
@@ -635,41 +639,41 @@
             exit(EXIT_FAILURE);
         }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M1_x", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M1_y", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M1_z", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M1_tip", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M1_tilt", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M2_x", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M2_y", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M2_z", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M2_tip", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M2_tilt", 0, NULL, 32.32)) {
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m1_x", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m1_y", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m1_z", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m1_tip", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m1_tilt", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m2_x", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m2_y", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m2_z", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m2_tip", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m2_tilt", 0, NULL, 32.32)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -691,4 +695,28 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "teltemp_m1", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "teltemp_m1cell", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "teltemp_m2", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "teltemp_spider", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "teltemp_truss", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "teltemp_extra", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddF32(md, PS_LIST_TAIL, "pon_time", 0, NULL, 32.32)) {
             psFree(md);
@@ -777,4 +805,8 @@
             exit(EXIT_FAILURE);
         }
+        if (strncmp(object->comment, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (!object->airmass == 32.32) {
             psFree(object);
@@ -825,41 +857,41 @@
             exit(EXIT_FAILURE);
         }
-        if (!object->M1_x == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_y == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_z == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_tip == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_tilt == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_x == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_y == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_z == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_tip == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_tilt == 32.32) {
+        if (!object->m1_x == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_y == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_z == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_tip == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_tilt == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_x == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_y == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_z == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_tip == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_tilt == 32.32) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -881,4 +913,28 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->teltemp_m1 == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_m1cell == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_m2 == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_spider == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_truss == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_extra == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (!object->pon_time == 32.32) {
             psFree(object);
@@ -967,4 +1023,8 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "comment", 0, NULL, "a string")) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 32.32)) {
             psFree(md);
@@ -1015,41 +1075,41 @@
             exit(EXIT_FAILURE);
         }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M1_x", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M1_y", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M1_z", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M1_tip", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M1_tilt", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M2_x", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M2_y", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M2_z", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M2_tip", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "M2_tilt", 0, NULL, 32.32)) {
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m1_x", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m1_y", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m1_z", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m1_tip", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m1_tilt", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m2_x", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m2_y", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m2_z", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m2_tip", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "m2_tilt", 0, NULL, 32.32)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1071,4 +1131,28 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "teltemp_m1", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "teltemp_m1cell", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "teltemp_m2", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "teltemp_spider", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "teltemp_truss", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "teltemp_extra", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddF32(md, PS_LIST_TAIL, "pon_time", 0, NULL, 32.32)) {
             psFree(md);
@@ -1153,4 +1237,8 @@
             exit(EXIT_FAILURE);
         }
+        if (strncmp(object->comment, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (!object->airmass == 32.32) {
             psFree(object);
@@ -1201,41 +1289,41 @@
             exit(EXIT_FAILURE);
         }
-        if (!object->M1_x == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_y == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_z == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_tip == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M1_tilt == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_x == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_y == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_z == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_tip == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->M2_tilt == 32.32) {
+        if (!object->m1_x == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_y == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_z == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_tip == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m1_tilt == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_x == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_y == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_z == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_tip == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->m2_tilt == 32.32) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -1254,4 +1342,28 @@
         }
         if (!object->env_wind_dir == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_m1 == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_m1cell == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_m2 == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_spider == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_truss == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->teltemp_extra == 32.32) {
             psFree(object);
             exit(EXIT_FAILURE);
