Index: /trunk/ippdb/configure.ac
===================================================================
--- /trunk/ippdb/configure.ac	(revision 13620)
+++ /trunk/ippdb/configure.ac	(revision 13621)
@@ -7,5 +7,5 @@
 AC_PREREQ(2.59)
 
-AC_INIT([ippdb], [1.1.19], [pan-starrs.ifa.hawaii.edu])
+AC_INIT([ippdb], [1.1.20], [pan-starrs.ifa.hawaii.edu])
 AC_CONFIG_SRCDIR([ippdb.pc.in])
 
@@ -35,5 +35,5 @@
 dnl is this the best was to setup recursive CFLAGS?
 IPP_STDOPTS
-ippdb_CFLAGS="-Wall -Werror -std=c99 -fno-strict-aliasing"
+ippdb_CFLAGS="-Wall -Werror -pedantic -std=c99 -fno-strict-aliasing"
 AC_SUBST([ippdb_CFLAGS])
 
Index: /trunk/ippdb/src/ippdb.c
===================================================================
--- /trunk/ippdb/src/ippdb.c	(revision 13620)
+++ /trunk/ippdb/src/ippdb.c	(revision 13621)
@@ -3526,5 +3526,5 @@
 static void rawExpRowFree(rawExpRow *object);
 
-rawExpRow *rawExpRowAlloc(const char *exp_tag, const char *exp_id, const char *camera, const char *telescope, psTime* dateobs, const char *exp_type, psS32 imfiles, const char *filelevel, const char *workdir, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, const char *object, psF32 solang, psS16 fault)
+rawExpRow *rawExpRowAlloc(const char *exp_tag, const char *exp_id, const char *camera, const char *telescope, psTime* dateobs, const char *exp_type, psS32 imfiles, const char *filelevel, const char *workdir, 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, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psF32 solang, psS16 fault)
 {
     rawExpRow       *_object;
@@ -3547,4 +3547,5 @@
     _object->decl = decl;
     _object->exp_time = exp_time;
+    _object->sat_pixel_frac = sat_pixel_frac;
     _object->bg = bg;
     _object->bg_stdev = bg_stdev;
@@ -3554,4 +3555,9 @@
     _object->ccd_temp = ccd_temp;
     _object->posang = posang;
+    _object->user_1 = user_1;
+    _object->user_2 = user_2;
+    _object->user_3 = user_3;
+    _object->user_4 = user_4;
+    _object->user_5 = user_5;
     _object->object = psStringCopy(object);
     _object->solang = solang;
@@ -3648,4 +3654,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "sat_pixel_frac", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item sat_pixel_frac");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, 0.0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
@@ -3683,4 +3694,29 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "object", PS_DATA_STRING, NULL, "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item object");
@@ -3711,5 +3747,5 @@
 }
 
-bool rawExpInsert(psDB * dbh, const char *exp_tag, const char *exp_id, const char *camera, const char *telescope, psTime* dateobs, const char *exp_type, psS32 imfiles, const char *filelevel, const char *workdir, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, const char *object, psF32 solang, psS16 fault)
+bool rawExpInsert(psDB * dbh, const char *exp_tag, const char *exp_id, const char *camera, const char *telescope, psTime* dateobs, const char *exp_type, psS32 imfiles, const char *filelevel, const char *workdir, 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, 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();
@@ -3784,4 +3820,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "sat_pixel_frac", PS_DATA_F32, NULL, sat_pixel_frac)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item sat_pixel_frac");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, bg)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
@@ -3816,4 +3857,29 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "posang", PS_DATA_F64, NULL, posang)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item posang");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
         psFree(md);
         return false;
@@ -3857,5 +3923,5 @@
 bool rawExpInsertObject(psDB *dbh, rawExpRow *object)
 {
-    return rawExpInsert(dbh, object->exp_tag, object->exp_id, object->camera, object->telescope, object->dateobs, object->exp_type, object->imfiles, object->filelevel, object->workdir, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang, object->object, object->solang, object->fault);
+    return rawExpInsert(dbh, object->exp_tag, object->exp_id, object->camera, object->telescope, object->dateobs, object->exp_type, object->imfiles, object->filelevel, object->workdir, 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->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->object, object->solang, object->fault);
 }
 
@@ -4000,4 +4066,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "sat_pixel_frac", PS_DATA_F32, NULL, object->sat_pixel_frac)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item sat_pixel_frac");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, object->bg)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
@@ -4035,4 +4106,29 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, object->user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, object->user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, object->user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, object->user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "object", PS_DATA_STRING, NULL, object->object)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item object");
@@ -4129,4 +4225,9 @@
         return false;
     }
+    psF32 sat_pixel_frac = psMetadataLookupF32(&status, md, "sat_pixel_frac");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item sat_pixel_frac");
+        return false;
+    }
     psF64 bg = psMetadataLookupF64(&status, md, "bg");
     if (!status) {
@@ -4164,4 +4265,29 @@
         return false;
     }
+    psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_1");
+        return false;
+    }
+    psF64 user_2 = psMetadataLookupF64(&status, md, "user_2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_2");
+        return false;
+    }
+    psF64 user_3 = psMetadataLookupF64(&status, md, "user_3");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_3");
+        return false;
+    }
+    psF64 user_4 = psMetadataLookupF64(&status, md, "user_4");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_4");
+        return false;
+    }
+    psF64 user_5 = psMetadataLookupF64(&status, md, "user_5");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_5");
+        return false;
+    }
     char* object = psMetadataLookupPtr(&status, md, "object");
     if (!status) {
@@ -4180,5 +4306,5 @@
     }
 
-    return rawExpRowAlloc(exp_tag, exp_id, camera, telescope, dateobs, exp_type, imfiles, filelevel, workdir, filter, airmass, ra, decl, exp_time, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang, object, solang, fault);
+    return rawExpRowAlloc(exp_tag, exp_id, camera, telescope, dateobs, exp_type, imfiles, filelevel, workdir, filter, airmass, ra, decl, exp_time, sat_pixel_frac, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang, user_1, user_2, user_3, user_4, user_5, object, solang, fault);
 }
 psArray *rawExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -4292,5 +4418,5 @@
 static void rawImfileRowFree(rawImfileRow *object);
 
-rawImfileRow *rawImfileRowAlloc(const char *exp_tag, 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, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, const char *object, psTime* dateobs, psS16 fault)
+rawImfileRow *rawImfileRowAlloc(const char *exp_tag, 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, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psTime* dateobs, psS16 fault)
 {
     rawImfileRow    *_object;
@@ -4309,4 +4435,5 @@
     _object->decl = decl;
     _object->exp_time = exp_time;
+    _object->sat_pixel_frac = sat_pixel_frac;
     _object->bg = bg;
     _object->bg_stdev = bg_stdev;
@@ -4316,4 +4443,9 @@
     _object->ccd_temp = ccd_temp;
     _object->posang = posang;
+    _object->user_1 = user_1;
+    _object->user_2 = user_2;
+    _object->user_3 = user_3;
+    _object->user_4 = user_4;
+    _object->user_5 = user_5;
     _object->object = psStringCopy(object);
     _object->dateobs = psTimeCopy(dateobs);
@@ -4388,4 +4520,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "sat_pixel_frac", PS_DATA_F32, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item sat_pixel_frac");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, 0.0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
@@ -4423,4 +4560,29 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "object", PS_DATA_STRING, NULL, "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item object");
@@ -4451,5 +4613,5 @@
 }
 
-bool rawImfileInsert(psDB * dbh, const char *exp_tag, 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, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, const char *object, psTime* dateobs, psS16 fault)
+bool rawImfileInsert(psDB * dbh, const char *exp_tag, 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, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *object, psTime* dateobs, psS16 fault)
 {
     psMetadata *md = psMetadataAlloc();
@@ -4504,4 +4666,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "sat_pixel_frac", PS_DATA_F32, NULL, sat_pixel_frac)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item sat_pixel_frac");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, bg)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
@@ -4536,4 +4703,29 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "posang", PS_DATA_F64, NULL, posang)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item posang");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
         psFree(md);
         return false;
@@ -4577,5 +4769,5 @@
 bool rawImfileInsertObject(psDB *dbh, rawImfileRow *object)
 {
-    return rawImfileInsert(dbh, object->exp_tag, object->class_id, object->uri, object->exp_type, object->filelevel, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang, object->object, object->dateobs, object->fault);
+    return rawImfileInsert(dbh, object->exp_tag, 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->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->object, object->dateobs, object->fault);
 }
 
@@ -4700,4 +4892,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "sat_pixel_frac", PS_DATA_F32, NULL, object->sat_pixel_frac)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item sat_pixel_frac");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, object->bg)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
@@ -4735,4 +4932,29 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, object->user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, object->user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, object->user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, object->user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "object", PS_DATA_STRING, NULL, object->object)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item object");
@@ -4809,4 +5031,9 @@
         return false;
     }
+    psF32 sat_pixel_frac = psMetadataLookupF32(&status, md, "sat_pixel_frac");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item sat_pixel_frac");
+        return false;
+    }
     psF64 bg = psMetadataLookupF64(&status, md, "bg");
     if (!status) {
@@ -4844,4 +5071,29 @@
         return false;
     }
+    psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_1");
+        return false;
+    }
+    psF64 user_2 = psMetadataLookupF64(&status, md, "user_2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_2");
+        return false;
+    }
+    psF64 user_3 = psMetadataLookupF64(&status, md, "user_3");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_3");
+        return false;
+    }
+    psF64 user_4 = psMetadataLookupF64(&status, md, "user_4");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_4");
+        return false;
+    }
+    psF64 user_5 = psMetadataLookupF64(&status, md, "user_5");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_5");
+        return false;
+    }
     char* object = psMetadataLookupPtr(&status, md, "object");
     if (!status) {
@@ -4860,5 +5112,5 @@
     }
 
-    return rawImfileRowAlloc(exp_tag, class_id, uri, exp_type, filelevel, filter, airmass, ra, decl, exp_time, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang, object, dateobs, fault);
+    return rawImfileRowAlloc(exp_tag, 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, user_1, user_2, user_3, user_4, user_5, object, dateobs, fault);
 }
 psArray *rawImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -13281,5 +13533,5 @@
 static void detProcessedImfileRowFree(detProcessedImfileRow *object);
 
-detProcessedImfileRow *detProcessedImfileRowAlloc(psS64 det_id, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *path_base, psS16 fault)
+detProcessedImfileRow *detProcessedImfileRowAlloc(psS64 det_id, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
 {
     detProcessedImfileRow *_object;
@@ -13296,4 +13548,12 @@
     _object->bg_stdev = bg_stdev;
     _object->bg_mean_stdev = bg_mean_stdev;
+    _object->fringe_0 = fringe_0;
+    _object->fringe_1 = fringe_1;
+    _object->fringe_2 = fringe_2;
+    _object->user_1 = user_1;
+    _object->user_2 = user_2;
+    _object->user_3 = user_3;
+    _object->user_4 = user_4;
+    _object->user_5 = user_5;
     _object->path_base = psStringCopy(path_base);
     _object->fault = fault;
@@ -13354,4 +13614,44 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_0", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_0");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_1", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, "255")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
@@ -13377,5 +13677,5 @@
 }
 
-bool detProcessedImfileInsert(psDB * dbh, psS64 det_id, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *path_base, psS16 fault)
+bool detProcessedImfileInsert(psDB * dbh, psS64 det_id, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
 {
     psMetadata *md = psMetadataAlloc();
@@ -13417,4 +13717,44 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, bg_mean_stdev)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_0", PS_DATA_F64, NULL, fringe_0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_0");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_1", PS_DATA_F64, NULL, fringe_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, fringe_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
         psFree(md);
         return false;
@@ -13453,5 +13793,5 @@
 bool detProcessedImfileInsertObject(psDB *dbh, detProcessedImfileRow *object)
 {
-    return detProcessedImfileInsert(dbh, object->det_id, object->exp_tag, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->path_base, object->fault);
+    return detProcessedImfileInsert(dbh, object->det_id, object->exp_tag, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->fringe_0, object->fringe_1, object->fringe_2, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->path_base, object->fault);
 }
 
@@ -13566,4 +13906,44 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_0", PS_DATA_F64, NULL, object->fringe_0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_0");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_1", PS_DATA_F64, NULL, object->fringe_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, object->fringe_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, object->user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, object->user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, object->user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, object->user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, object->path_base)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
@@ -13625,4 +14005,44 @@
         return false;
     }
+    psF64 fringe_0 = psMetadataLookupF64(&status, md, "fringe_0");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_0");
+        return false;
+    }
+    psF64 fringe_1 = psMetadataLookupF64(&status, md, "fringe_1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_1");
+        return false;
+    }
+    psF64 fringe_2 = psMetadataLookupF64(&status, md, "fringe_2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_2");
+        return false;
+    }
+    psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_1");
+        return false;
+    }
+    psF64 user_2 = psMetadataLookupF64(&status, md, "user_2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_2");
+        return false;
+    }
+    psF64 user_3 = psMetadataLookupF64(&status, md, "user_3");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_3");
+        return false;
+    }
+    psF64 user_4 = psMetadataLookupF64(&status, md, "user_4");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_4");
+        return false;
+    }
+    psF64 user_5 = psMetadataLookupF64(&status, md, "user_5");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_5");
+        return false;
+    }
     char* path_base = psMetadataLookupPtr(&status, md, "path_base");
     if (!status) {
@@ -13636,5 +14056,5 @@
     }
 
-    return detProcessedImfileRowAlloc(det_id, exp_tag, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, path_base, fault);
+    return detProcessedImfileRowAlloc(det_id, exp_tag, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, fringe_0, fringe_1, fringe_2, user_1, user_2, user_3, user_4, user_5, path_base, fault);
 }
 psArray *detProcessedImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -13748,5 +14168,5 @@
 static void detProcessedExpRowFree(detProcessedExpRow *object);
 
-detProcessedExpRow *detProcessedExpRowAlloc(psS64 det_id, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *path_base, psS16 fault)
+detProcessedExpRow *detProcessedExpRowAlloc(psS64 det_id, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
 {
     detProcessedExpRow *_object;
@@ -13761,4 +14181,12 @@
     _object->bg_stdev = bg_stdev;
     _object->bg_mean_stdev = bg_mean_stdev;
+    _object->fringe_0 = fringe_0;
+    _object->fringe_1 = fringe_1;
+    _object->fringe_2 = fringe_2;
+    _object->user_1 = user_1;
+    _object->user_2 = user_2;
+    _object->user_3 = user_3;
+    _object->user_4 = user_4;
+    _object->user_5 = user_5;
     _object->path_base = psStringCopy(path_base);
     _object->fault = fault;
@@ -13807,4 +14235,44 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_0", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_0");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_1", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, "255")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
@@ -13830,5 +14298,5 @@
 }
 
-bool detProcessedExpInsert(psDB * dbh, psS64 det_id, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *path_base, psS16 fault)
+bool detProcessedExpInsert(psDB * dbh, psS64 det_id, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
 {
     psMetadata *md = psMetadataAlloc();
@@ -13860,4 +14328,44 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, bg_mean_stdev)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_0", PS_DATA_F64, NULL, fringe_0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_0");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_1", PS_DATA_F64, NULL, fringe_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, fringe_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
         psFree(md);
         return false;
@@ -13896,5 +14404,5 @@
 bool detProcessedExpInsertObject(psDB *dbh, detProcessedExpRow *object)
 {
-    return detProcessedExpInsert(dbh, object->det_id, object->exp_tag, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->path_base, object->fault);
+    return detProcessedExpInsert(dbh, object->det_id, object->exp_tag, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->fringe_0, object->fringe_1, object->fringe_2, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->path_base, object->fault);
 }
 
@@ -13999,4 +14507,44 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_0", PS_DATA_F64, NULL, object->fringe_0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_0");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_1", PS_DATA_F64, NULL, object->fringe_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, object->fringe_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, object->user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, object->user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, object->user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, object->user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, object->path_base)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
@@ -14048,4 +14596,44 @@
         return false;
     }
+    psF64 fringe_0 = psMetadataLookupF64(&status, md, "fringe_0");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_0");
+        return false;
+    }
+    psF64 fringe_1 = psMetadataLookupF64(&status, md, "fringe_1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_1");
+        return false;
+    }
+    psF64 fringe_2 = psMetadataLookupF64(&status, md, "fringe_2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_2");
+        return false;
+    }
+    psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_1");
+        return false;
+    }
+    psF64 user_2 = psMetadataLookupF64(&status, md, "user_2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_2");
+        return false;
+    }
+    psF64 user_3 = psMetadataLookupF64(&status, md, "user_3");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_3");
+        return false;
+    }
+    psF64 user_4 = psMetadataLookupF64(&status, md, "user_4");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_4");
+        return false;
+    }
+    psF64 user_5 = psMetadataLookupF64(&status, md, "user_5");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_5");
+        return false;
+    }
     char* path_base = psMetadataLookupPtr(&status, md, "path_base");
     if (!status) {
@@ -14059,5 +14647,5 @@
     }
 
-    return detProcessedExpRowAlloc(det_id, exp_tag, recipe, bg, bg_stdev, bg_mean_stdev, path_base, fault);
+    return detProcessedExpRowAlloc(det_id, exp_tag, recipe, bg, bg_stdev, bg_mean_stdev, fringe_0, fringe_1, fringe_2, user_1, user_2, user_3, user_4, user_5, path_base, fault);
 }
 psArray *detProcessedExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -14171,5 +14759,5 @@
 static void detStackedImfileRowFree(detStackedImfileRow *object);
 
-detStackedImfileRow *detStackedImfileRowAlloc(psS64 det_id, psS32 iteration, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psS16 fault)
+detStackedImfileRow *detStackedImfileRowAlloc(psS64 det_id, psS32 iteration, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, psS16 fault)
 {
     detStackedImfileRow *_object;
@@ -14186,4 +14774,9 @@
     _object->bg_stdev = bg_stdev;
     _object->bg_mean_stdev = bg_mean_stdev;
+    _object->user_1 = user_1;
+    _object->user_2 = user_2;
+    _object->user_3 = user_3;
+    _object->user_4 = user_4;
+    _object->user_5 = user_5;
     _object->fault = fault;
 
@@ -14241,4 +14834,29 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key NOT NULL", 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
@@ -14259,5 +14877,5 @@
 }
 
-bool detStackedImfileInsert(psDB * dbh, psS64 det_id, psS32 iteration, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psS16 fault)
+bool detStackedImfileInsert(psDB * dbh, psS64 det_id, psS32 iteration, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, psS16 fault)
 {
     psMetadata *md = psMetadataAlloc();
@@ -14299,4 +14917,29 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, bg_mean_stdev)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
         psFree(md);
         return false;
@@ -14330,5 +14973,5 @@
 bool detStackedImfileInsertObject(psDB *dbh, detStackedImfileRow *object)
 {
-    return detStackedImfileInsert(dbh, object->det_id, object->iteration, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->fault);
+    return detStackedImfileInsert(dbh, object->det_id, object->iteration, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->fault);
 }
 
@@ -14443,4 +15086,29 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, object->user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, object->user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, object->user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, object->user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
@@ -14497,4 +15165,29 @@
         return false;
     }
+    psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_1");
+        return false;
+    }
+    psF64 user_2 = psMetadataLookupF64(&status, md, "user_2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_2");
+        return false;
+    }
+    psF64 user_3 = psMetadataLookupF64(&status, md, "user_3");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_3");
+        return false;
+    }
+    psF64 user_4 = psMetadataLookupF64(&status, md, "user_4");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_4");
+        return false;
+    }
+    psF64 user_5 = psMetadataLookupF64(&status, md, "user_5");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_5");
+        return false;
+    }
     psS16 fault = psMetadataLookupS16(&status, md, "fault");
     if (!status) {
@@ -14503,5 +15196,5 @@
     }
 
-    return detStackedImfileRowAlloc(det_id, iteration, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, fault);
+    return detStackedImfileRowAlloc(det_id, iteration, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, user_1, user_2, user_3, user_4, user_5, fault);
 }
 psArray *detStackedImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -14973,5 +15666,5 @@
 static void detNormalizedImfileRowFree(detNormalizedImfileRow *object);
 
-detNormalizedImfileRow *detNormalizedImfileRowAlloc(psS64 det_id, psS32 iteration, const char *class_id, const char *uri, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *path_base, psS16 fault)
+detNormalizedImfileRow *detNormalizedImfileRowAlloc(psS64 det_id, psS32 iteration, const char *class_id, const char *uri, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
 {
     detNormalizedImfileRow *_object;
@@ -14987,4 +15680,9 @@
     _object->bg_stdev = bg_stdev;
     _object->bg_mean_stdev = bg_mean_stdev;
+    _object->user_1 = user_1;
+    _object->user_2 = user_2;
+    _object->user_3 = user_3;
+    _object->user_4 = user_4;
+    _object->user_5 = user_5;
     _object->path_base = psStringCopy(path_base);
     _object->fault = fault;
@@ -15038,4 +15736,29 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, "255")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
@@ -15061,5 +15784,5 @@
 }
 
-bool detNormalizedImfileInsert(psDB * dbh, psS64 det_id, psS32 iteration, const char *class_id, const char *uri, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *path_base, psS16 fault)
+bool detNormalizedImfileInsert(psDB * dbh, psS64 det_id, psS32 iteration, const char *class_id, const char *uri, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
 {
     psMetadata *md = psMetadataAlloc();
@@ -15096,4 +15819,29 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, bg_mean_stdev)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
         psFree(md);
         return false;
@@ -15132,5 +15880,5 @@
 bool detNormalizedImfileInsertObject(psDB *dbh, detNormalizedImfileRow *object)
 {
-    return detNormalizedImfileInsert(dbh, object->det_id, object->iteration, object->class_id, object->uri, object->bg, object->bg_stdev, object->bg_mean_stdev, object->path_base, object->fault);
+    return detNormalizedImfileInsert(dbh, object->det_id, object->iteration, object->class_id, object->uri, object->bg, object->bg_stdev, object->bg_mean_stdev, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->path_base, object->fault);
 }
 
@@ -15240,4 +15988,29 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, object->user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, object->user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, object->user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, object->user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, object->path_base)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
@@ -15294,4 +16067,29 @@
         return false;
     }
+    psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_1");
+        return false;
+    }
+    psF64 user_2 = psMetadataLookupF64(&status, md, "user_2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_2");
+        return false;
+    }
+    psF64 user_3 = psMetadataLookupF64(&status, md, "user_3");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_3");
+        return false;
+    }
+    psF64 user_4 = psMetadataLookupF64(&status, md, "user_4");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_4");
+        return false;
+    }
+    psF64 user_5 = psMetadataLookupF64(&status, md, "user_5");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_5");
+        return false;
+    }
     char* path_base = psMetadataLookupPtr(&status, md, "path_base");
     if (!status) {
@@ -15305,5 +16103,5 @@
     }
 
-    return detNormalizedImfileRowAlloc(det_id, iteration, class_id, uri, bg, bg_stdev, bg_mean_stdev, path_base, fault);
+    return detNormalizedImfileRowAlloc(det_id, iteration, class_id, uri, bg, bg_stdev, bg_mean_stdev, user_1, user_2, user_3, user_4, user_5, path_base, fault);
 }
 psArray *detNormalizedImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -15417,5 +16215,5 @@
 static void detNormalizedExpRowFree(detNormalizedExpRow *object);
 
-detNormalizedExpRow *detNormalizedExpRowAlloc(psS64 det_id, psS32 iteration, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *path_base, psS16 fault)
+detNormalizedExpRow *detNormalizedExpRowAlloc(psS64 det_id, psS32 iteration, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
 {
     detNormalizedExpRow *_object;
@@ -15430,4 +16228,9 @@
     _object->bg_stdev = bg_stdev;
     _object->bg_mean_stdev = bg_mean_stdev;
+    _object->user_1 = user_1;
+    _object->user_2 = user_2;
+    _object->user_3 = user_3;
+    _object->user_4 = user_4;
+    _object->user_5 = user_5;
     _object->path_base = psStringCopy(path_base);
     _object->fault = fault;
@@ -15475,4 +16278,29 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, "255")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
@@ -15498,5 +16326,5 @@
 }
 
-bool detNormalizedExpInsert(psDB * dbh, psS64 det_id, psS32 iteration, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *path_base, psS16 fault)
+bool detNormalizedExpInsert(psDB * dbh, psS64 det_id, psS32 iteration, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
 {
     psMetadata *md = psMetadataAlloc();
@@ -15528,4 +16356,29 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, bg_mean_stdev)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
         psFree(md);
         return false;
@@ -15564,5 +16417,5 @@
 bool detNormalizedExpInsertObject(psDB *dbh, detNormalizedExpRow *object)
 {
-    return detNormalizedExpInsert(dbh, object->det_id, object->iteration, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->path_base, object->fault);
+    return detNormalizedExpInsert(dbh, object->det_id, object->iteration, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->path_base, object->fault);
 }
 
@@ -15667,4 +16520,29 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, object->user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, object->user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, object->user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, object->user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, object->path_base)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
@@ -15716,4 +16594,29 @@
         return false;
     }
+    psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_1");
+        return false;
+    }
+    psF64 user_2 = psMetadataLookupF64(&status, md, "user_2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_2");
+        return false;
+    }
+    psF64 user_3 = psMetadataLookupF64(&status, md, "user_3");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_3");
+        return false;
+    }
+    psF64 user_4 = psMetadataLookupF64(&status, md, "user_4");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_4");
+        return false;
+    }
+    psF64 user_5 = psMetadataLookupF64(&status, md, "user_5");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_5");
+        return false;
+    }
     char* path_base = psMetadataLookupPtr(&status, md, "path_base");
     if (!status) {
@@ -15727,5 +16630,5 @@
     }
 
-    return detNormalizedExpRowAlloc(det_id, iteration, recipe, bg, bg_stdev, bg_mean_stdev, path_base, fault);
+    return detNormalizedExpRowAlloc(det_id, iteration, recipe, bg, bg_stdev, bg_mean_stdev, user_1, user_2, user_3, user_4, user_5, path_base, fault);
 }
 psArray *detNormalizedExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -15839,5 +16742,5 @@
 static void detResidImfileRowFree(detResidImfileRow *object);
 
-detResidImfileRow *detResidImfileRowAlloc(psS64 det_id, psS32 iteration, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *path_base, psS16 fault)
+detResidImfileRow *detResidImfileRowAlloc(psS64 det_id, psS32 iteration, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 bin_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
 {
     detResidImfileRow *_object;
@@ -15855,4 +16758,13 @@
     _object->bg_stdev = bg_stdev;
     _object->bg_mean_stdev = bg_mean_stdev;
+    _object->bin_stdev = bin_stdev;
+    _object->fringe_0 = fringe_0;
+    _object->fringe_1 = fringe_1;
+    _object->fringe_2 = fringe_2;
+    _object->user_1 = user_1;
+    _object->user_2 = user_2;
+    _object->user_3 = user_3;
+    _object->user_4 = user_4;
+    _object->user_5 = user_5;
     _object->path_base = psStringCopy(path_base);
     _object->fault = fault;
@@ -15918,4 +16830,49 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_0", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_0");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_1", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, "255")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
@@ -15941,5 +16898,5 @@
 }
 
-bool detResidImfileInsert(psDB * dbh, psS64 det_id, psS32 iteration, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *path_base, psS16 fault)
+bool detResidImfileInsert(psDB * dbh, psS64 det_id, psS32 iteration, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 bin_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, psS16 fault)
 {
     psMetadata *md = psMetadataAlloc();
@@ -15986,4 +16943,49 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, bg_mean_stdev)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, bin_stdev)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_0", PS_DATA_F64, NULL, fringe_0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_0");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_1", PS_DATA_F64, NULL, fringe_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, fringe_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
         psFree(md);
         return false;
@@ -16022,5 +17024,5 @@
 bool detResidImfileInsertObject(psDB *dbh, detResidImfileRow *object)
 {
-    return detResidImfileInsert(dbh, object->det_id, object->iteration, object->exp_tag, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->path_base, object->fault);
+    return detResidImfileInsert(dbh, object->det_id, object->iteration, object->exp_tag, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->bin_stdev, object->fringe_0, object->fringe_1, object->fringe_2, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->path_base, object->fault);
 }
 
@@ -16140,4 +17142,49 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, object->bin_stdev)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_0", PS_DATA_F64, NULL, object->fringe_0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_0");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_1", PS_DATA_F64, NULL, object->fringe_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, object->fringe_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, object->user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, object->user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, object->user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, object->user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, object->path_base)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
@@ -16204,4 +17251,49 @@
         return false;
     }
+    psF64 bin_stdev = psMetadataLookupF64(&status, md, "bin_stdev");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bin_stdev");
+        return false;
+    }
+    psF64 fringe_0 = psMetadataLookupF64(&status, md, "fringe_0");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_0");
+        return false;
+    }
+    psF64 fringe_1 = psMetadataLookupF64(&status, md, "fringe_1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_1");
+        return false;
+    }
+    psF64 fringe_2 = psMetadataLookupF64(&status, md, "fringe_2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_2");
+        return false;
+    }
+    psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_1");
+        return false;
+    }
+    psF64 user_2 = psMetadataLookupF64(&status, md, "user_2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_2");
+        return false;
+    }
+    psF64 user_3 = psMetadataLookupF64(&status, md, "user_3");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_3");
+        return false;
+    }
+    psF64 user_4 = psMetadataLookupF64(&status, md, "user_4");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_4");
+        return false;
+    }
+    psF64 user_5 = psMetadataLookupF64(&status, md, "user_5");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_5");
+        return false;
+    }
     char* path_base = psMetadataLookupPtr(&status, md, "path_base");
     if (!status) {
@@ -16215,5 +17307,5 @@
     }
 
-    return detResidImfileRowAlloc(det_id, iteration, exp_tag, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, path_base, fault);
+    return detResidImfileRowAlloc(det_id, iteration, exp_tag, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, bin_stdev, fringe_0, fringe_1, fringe_2, user_1, user_2, user_3, user_4, user_5, path_base, fault);
 }
 psArray *detResidImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -16327,5 +17419,5 @@
 static void detResidExpRowFree(detResidExpRow *object);
 
-detResidExpRow *detResidExpRowAlloc(psS64 det_id, psS32 iteration, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *path_base, bool accept, psS16 fault)
+detResidExpRow *detResidExpRowAlloc(psS64 det_id, psS32 iteration, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 bin_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, bool accept, psS16 fault)
 {
     detResidExpRow  *_object;
@@ -16341,4 +17433,13 @@
     _object->bg_stdev = bg_stdev;
     _object->bg_mean_stdev = bg_mean_stdev;
+    _object->bin_stdev = bin_stdev;
+    _object->fringe_0 = fringe_0;
+    _object->fringe_1 = fringe_1;
+    _object->fringe_2 = fringe_2;
+    _object->user_1 = user_1;
+    _object->user_2 = user_2;
+    _object->user_3 = user_3;
+    _object->user_4 = user_4;
+    _object->user_5 = user_5;
     _object->path_base = psStringCopy(path_base);
     _object->accept = accept;
@@ -16393,4 +17494,49 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_0", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_0");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_1", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, "255")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
@@ -16421,5 +17567,5 @@
 }
 
-bool detResidExpInsert(psDB * dbh, psS64 det_id, psS32 iteration, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *path_base, bool accept, psS16 fault)
+bool detResidExpInsert(psDB * dbh, psS64 det_id, psS32 iteration, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 bin_stdev, psF64 fringe_0, psF64 fringe_1, psF64 fringe_2, psF64 user_1, psF64 user_2, psF64 user_3, psF64 user_4, psF64 user_5, const char *path_base, bool accept, psS16 fault)
 {
     psMetadata *md = psMetadataAlloc();
@@ -16456,4 +17602,49 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, bg_mean_stdev)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, bin_stdev)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_0", PS_DATA_F64, NULL, fringe_0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_0");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_1", PS_DATA_F64, NULL, fringe_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, fringe_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
         psFree(md);
         return false;
@@ -16497,5 +17688,5 @@
 bool detResidExpInsertObject(psDB *dbh, detResidExpRow *object)
 {
-    return detResidExpInsert(dbh, object->det_id, object->iteration, object->exp_tag, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->path_base, object->accept, object->fault);
+    return detResidExpInsert(dbh, object->det_id, object->iteration, object->exp_tag, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->bin_stdev, object->fringe_0, object->fringe_1, object->fringe_2, object->user_1, object->user_2, object->user_3, object->user_4, object->user_5, object->path_base, object->accept, object->fault);
 }
 
@@ -16605,4 +17796,49 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "bin_stdev", PS_DATA_F64, NULL, object->bin_stdev)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item bin_stdev");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_0", PS_DATA_F64, NULL, object->fringe_0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_0");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_1", PS_DATA_F64, NULL, object->fringe_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fringe_2", PS_DATA_F64, NULL, object->fringe_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fringe_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_1", PS_DATA_F64, NULL, object->user_1)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_1");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_2", PS_DATA_F64, NULL, object->user_2)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_2");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_3", PS_DATA_F64, NULL, object->user_3)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_3");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_4", PS_DATA_F64, NULL, object->user_4)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_4");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "user_5", PS_DATA_F64, NULL, object->user_5)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item user_5");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAdd(md, PS_LIST_TAIL, "path_base", PS_DATA_STRING, NULL, object->path_base)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item path_base");
@@ -16664,4 +17900,49 @@
         return false;
     }
+    psF64 bin_stdev = psMetadataLookupF64(&status, md, "bin_stdev");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bin_stdev");
+        return false;
+    }
+    psF64 fringe_0 = psMetadataLookupF64(&status, md, "fringe_0");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_0");
+        return false;
+    }
+    psF64 fringe_1 = psMetadataLookupF64(&status, md, "fringe_1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_1");
+        return false;
+    }
+    psF64 fringe_2 = psMetadataLookupF64(&status, md, "fringe_2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fringe_2");
+        return false;
+    }
+    psF64 user_1 = psMetadataLookupF64(&status, md, "user_1");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_1");
+        return false;
+    }
+    psF64 user_2 = psMetadataLookupF64(&status, md, "user_2");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_2");
+        return false;
+    }
+    psF64 user_3 = psMetadataLookupF64(&status, md, "user_3");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_3");
+        return false;
+    }
+    psF64 user_4 = psMetadataLookupF64(&status, md, "user_4");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_4");
+        return false;
+    }
+    psF64 user_5 = psMetadataLookupF64(&status, md, "user_5");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item user_5");
+        return false;
+    }
     char* path_base = psMetadataLookupPtr(&status, md, "path_base");
     if (!status) {
@@ -16680,5 +17961,5 @@
     }
 
-    return detResidExpRowAlloc(det_id, iteration, exp_tag, recipe, bg, bg_stdev, bg_mean_stdev, path_base, accept, fault);
+    return detResidExpRowAlloc(det_id, iteration, exp_tag, recipe, bg, bg_stdev, bg_mean_stdev, bin_stdev, fringe_0, fringe_1, fringe_2, user_1, user_2, user_3, user_4, user_5, path_base, accept, fault);
 }
 psArray *detResidExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
Index: /trunk/ippdb/src/ippdb.h
===================================================================
--- /trunk/ippdb/src/ippdb.h	(revision 13620)
+++ /trunk/ippdb/src/ippdb.h	(revision 13621)
@@ -2011,4 +2011,5 @@
     psF64           decl;
     psF32           exp_time;
+    psF32           sat_pixel_frac;
     psF64           bg;
     psF64           bg_stdev;
@@ -2018,4 +2019,9 @@
     psF32           ccd_temp;
     psF64           posang;
+    psF64           user_1;
+    psF64           user_2;
+    psF64           user_3;
+    psF64           user_4;
+    psF64           user_5;
     char            *object;
     psF32           solang;
@@ -2043,4 +2049,5 @@
     psF64           decl,
     psF32           exp_time,
+    psF32           sat_pixel_frac,
     psF64           bg,
     psF64           bg_stdev,
@@ -2050,4 +2057,9 @@
     psF32           ccd_temp,
     psF64           posang,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *object,
     psF32           solang,
@@ -2096,4 +2108,5 @@
     psF64           decl,
     psF32           exp_time,
+    psF32           sat_pixel_frac,
     psF64           bg,
     psF64           bg_stdev,
@@ -2103,4 +2116,9 @@
     psF32           ccd_temp,
     psF64           posang,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *object,
     psF32           solang,
@@ -2271,4 +2289,5 @@
     psF64           decl;
     psF32           exp_time;
+    psF32           sat_pixel_frac;
     psF64           bg;
     psF64           bg_stdev;
@@ -2278,4 +2297,9 @@
     psF32           ccd_temp;
     psF64           posang;
+    psF64           user_1;
+    psF64           user_2;
+    psF64           user_3;
+    psF64           user_4;
+    psF64           user_5;
     char            *object;
     psTime*         dateobs;
@@ -2299,4 +2323,5 @@
     psF64           decl,
     psF32           exp_time,
+    psF32           sat_pixel_frac,
     psF64           bg,
     psF64           bg_stdev,
@@ -2306,4 +2331,9 @@
     psF32           ccd_temp,
     psF64           posang,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *object,
     psTime*         dateobs,
@@ -2348,4 +2378,5 @@
     psF64           decl,
     psF32           exp_time,
+    psF32           sat_pixel_frac,
     psF64           bg,
     psF64           bg_stdev,
@@ -2355,4 +2386,9 @@
     psF32           ccd_temp,
     psF64           posang,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *object,
     psTime*         dateobs,
@@ -6973,4 +7009,12 @@
     psF64           bg_stdev;
     psF64           bg_mean_stdev;
+    psF64           fringe_0;
+    psF64           fringe_1;
+    psF64           fringe_2;
+    psF64           user_1;
+    psF64           user_2;
+    psF64           user_3;
+    psF64           user_4;
+    psF64           user_5;
     char            *path_base;
     psS16           fault;
@@ -6991,4 +7035,12 @@
     psF64           bg_stdev,
     psF64           bg_mean_stdev,
+    psF64           fringe_0,
+    psF64           fringe_1,
+    psF64           fringe_2,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *path_base,
     psS16           fault
@@ -7030,4 +7082,12 @@
     psF64           bg_stdev,
     psF64           bg_mean_stdev,
+    psF64           fringe_0,
+    psF64           fringe_1,
+    psF64           fringe_2,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *path_base,
     psS16           fault
@@ -7193,4 +7253,12 @@
     psF64           bg_stdev;
     psF64           bg_mean_stdev;
+    psF64           fringe_0;
+    psF64           fringe_1;
+    psF64           fringe_2;
+    psF64           user_1;
+    psF64           user_2;
+    psF64           user_3;
+    psF64           user_4;
+    psF64           user_5;
     char            *path_base;
     psS16           fault;
@@ -7209,4 +7277,12 @@
     psF64           bg_stdev,
     psF64           bg_mean_stdev,
+    psF64           fringe_0,
+    psF64           fringe_1,
+    psF64           fringe_2,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *path_base,
     psS16           fault
@@ -7246,4 +7322,12 @@
     psF64           bg_stdev,
     psF64           bg_mean_stdev,
+    psF64           fringe_0,
+    psF64           fringe_1,
+    psF64           fringe_2,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *path_base,
     psS16           fault
@@ -7411,4 +7495,9 @@
     psF64           bg_stdev;
     psF64           bg_mean_stdev;
+    psF64           user_1;
+    psF64           user_2;
+    psF64           user_3;
+    psF64           user_4;
+    psF64           user_5;
     psS16           fault;
 } detStackedImfileRow;
@@ -7428,4 +7517,9 @@
     psF64           bg_stdev,
     psF64           bg_mean_stdev,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     psS16           fault
 );
@@ -7466,4 +7560,9 @@
     psF64           bg_stdev,
     psF64           bg_mean_stdev,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     psS16           fault
 );
@@ -7836,4 +7935,9 @@
     psF64           bg_stdev;
     psF64           bg_mean_stdev;
+    psF64           user_1;
+    psF64           user_2;
+    psF64           user_3;
+    psF64           user_4;
+    psF64           user_5;
     char            *path_base;
     psS16           fault;
@@ -7853,4 +7957,9 @@
     psF64           bg_stdev,
     psF64           bg_mean_stdev,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *path_base,
     psS16           fault
@@ -7891,4 +8000,9 @@
     psF64           bg_stdev,
     psF64           bg_mean_stdev,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *path_base,
     psS16           fault
@@ -8054,4 +8168,9 @@
     psF64           bg_stdev;
     psF64           bg_mean_stdev;
+    psF64           user_1;
+    psF64           user_2;
+    psF64           user_3;
+    psF64           user_4;
+    psF64           user_5;
     char            *path_base;
     psS16           fault;
@@ -8070,4 +8189,9 @@
     psF64           bg_stdev,
     psF64           bg_mean_stdev,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *path_base,
     psS16           fault
@@ -8107,4 +8231,9 @@
     psF64           bg_stdev,
     psF64           bg_mean_stdev,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *path_base,
     psS16           fault
@@ -8273,4 +8402,13 @@
     psF64           bg_stdev;
     psF64           bg_mean_stdev;
+    psF64           bin_stdev;
+    psF64           fringe_0;
+    psF64           fringe_1;
+    psF64           fringe_2;
+    psF64           user_1;
+    psF64           user_2;
+    psF64           user_3;
+    psF64           user_4;
+    psF64           user_5;
     char            *path_base;
     psS16           fault;
@@ -8292,4 +8430,13 @@
     psF64           bg_stdev,
     psF64           bg_mean_stdev,
+    psF64           bin_stdev,
+    psF64           fringe_0,
+    psF64           fringe_1,
+    psF64           fringe_2,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *path_base,
     psS16           fault
@@ -8332,4 +8479,13 @@
     psF64           bg_stdev,
     psF64           bg_mean_stdev,
+    psF64           bin_stdev,
+    psF64           fringe_0,
+    psF64           fringe_1,
+    psF64           fringe_2,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *path_base,
     psS16           fault
@@ -8496,4 +8652,13 @@
     psF64           bg_stdev;
     psF64           bg_mean_stdev;
+    psF64           bin_stdev;
+    psF64           fringe_0;
+    psF64           fringe_1;
+    psF64           fringe_2;
+    psF64           user_1;
+    psF64           user_2;
+    psF64           user_3;
+    psF64           user_4;
+    psF64           user_5;
     char            *path_base;
     bool            accept;
@@ -8514,4 +8679,13 @@
     psF64           bg_stdev,
     psF64           bg_mean_stdev,
+    psF64           bin_stdev,
+    psF64           fringe_0,
+    psF64           fringe_1,
+    psF64           fringe_2,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *path_base,
     bool            accept,
@@ -8553,4 +8727,13 @@
     psF64           bg_stdev,
     psF64           bg_mean_stdev,
+    psF64           bin_stdev,
+    psF64           fringe_0,
+    psF64           fringe_1,
+    psF64           fringe_2,
+    psF64           user_1,
+    psF64           user_2,
+    psF64           user_3,
+    psF64           user_4,
+    psF64           user_5,
     const char      *path_base,
     bool            accept,
Index: /trunk/ippdb/tests/alloc.c
===================================================================
--- /trunk/ippdb/tests/alloc.c	(revision 13620)
+++ /trunk/ippdb/tests/alloc.c	(revision 13621)
@@ -311,5 +311,5 @@
         rawExpRow       *object;
 
-        object = rawExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32, "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", 32.32, -16    );
+        object = rawExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32, "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, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16    );
 
         if (!object) {
@@ -372,4 +372,8 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->sat_pixel_frac == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (!object->bg == 64.64) {
             psFree(object);
@@ -400,4 +404,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -419,5 +443,5 @@
         rawImfileRow    *object;
 
-        object = rawImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z", -16    );
+        object = rawImfileRowAlloc("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, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", "0001-01-01T00:00:00Z", -16    );
 
         if (!object) {
@@ -465,4 +489,8 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->sat_pixel_frac == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (!object->bg == 64.64) {
             psFree(object);
@@ -493,4 +521,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -1336,5 +1384,5 @@
         detProcessedImfileRow *object;
 
-        object = detProcessedImfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, "a string", -16    );
+        object = detProcessedImfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
 
         if (!object) {
@@ -1374,4 +1422,36 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->fringe_0 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -1389,5 +1469,5 @@
         detProcessedExpRow *object;
 
-        object = detProcessedExpRowAlloc(-64, "a string", "a string", 64.64, 64.64, 64.64, "a string", -16    );
+        object = detProcessedExpRowAlloc(-64, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
 
         if (!object) {
@@ -1419,4 +1499,36 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->fringe_0 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -1434,5 +1546,5 @@
         detStackedImfileRow *object;
 
-        object = detStackedImfileRowAlloc(-64, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, -16    );
+        object = detStackedImfileRowAlloc(-64, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, -16    );
 
         if (!object) {
@@ -1472,4 +1584,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (!object->fault == -16) {
             psFree(object);
@@ -1516,5 +1648,5 @@
         detNormalizedImfileRow *object;
 
-        object = detNormalizedImfileRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, "a string", -16    );
+        object = detNormalizedImfileRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
 
         if (!object) {
@@ -1550,4 +1682,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -1565,5 +1717,5 @@
         detNormalizedExpRow *object;
 
-        object = detNormalizedExpRowAlloc(-64, -32, "a string", 64.64, 64.64, 64.64, "a string", -16    );
+        object = detNormalizedExpRowAlloc(-64, -32, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
 
         if (!object) {
@@ -1595,4 +1747,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -1610,5 +1782,5 @@
         detResidImfileRow *object;
 
-        object = detResidImfileRowAlloc(-64, -32, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, "a string", -16    );
+        object = detResidImfileRowAlloc(-64, -32, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16    );
 
         if (!object) {
@@ -1652,4 +1824,40 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->bin_stdev == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_0 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -1667,5 +1875,5 @@
         detResidExpRow  *object;
 
-        object = detResidExpRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, "a string", true, -16    );
+        object = detResidExpRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", true, -16    );
 
         if (!object) {
@@ -1698,4 +1906,40 @@
         }
         if (!object->bg_mean_stdev == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->bin_stdev == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_0 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
             psFree(object);
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/insert.c
===================================================================
--- /trunk/ippdb/tests/insert.c	(revision 13620)
+++ /trunk/ippdb/tests/insert.c	(revision 13621)
@@ -148,20 +148,20 @@
         }
 
-        if (!rawExpInsert(dbh, "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32, "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 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, "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z", -16)) {
+        if (!rawExpInsert(dbh, "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32, "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, 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, "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, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", "0001-01-01T00:00:00Z", -16)) {
             exit(EXIT_FAILURE);
         }
@@ -493,35 +493,35 @@
         }
 
-        if (!detProcessedImfileInsert(dbh, -64, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, "a string", -16)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!detProcessedExpInsert(dbh, -64, "a string", "a string", 64.64, 64.64, 64.64, "a string", -16)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!detStackedImfileInsert(dbh, -64, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, -16)) {
+        if (!detProcessedImfileInsert(dbh, -64, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16)) {
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+
+        dbh = psDBInit("localhost", "test", NULL, "test");
+        if (!dbh) {
+            exit(EXIT_FAILURE);
+        }
+
+        if (!detProcessedExpInsert(dbh, -64, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16)) {
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+
+        dbh = psDBInit("localhost", "test", NULL, "test");
+        if (!dbh) {
+            exit(EXIT_FAILURE);
+        }
+
+        if (!detStackedImfileInsert(dbh, -64, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, -16)) {
             exit(EXIT_FAILURE);
         }
@@ -553,50 +553,50 @@
         }
 
-        if (!detNormalizedImfileInsert(dbh, -64, -32, "a string", "a string", 64.64, 64.64, 64.64, "a string", -16)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!detNormalizedExpInsert(dbh, -64, -32, "a string", 64.64, 64.64, 64.64, "a string", -16)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!detResidImfileInsert(dbh, -64, -32, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, "a string", -16)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!detResidExpInsert(dbh, -64, -32, "a string", "a string", 64.64, 64.64, 64.64, "a string", true, -16)) {
+        if (!detNormalizedImfileInsert(dbh, -64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16)) {
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+
+        dbh = psDBInit("localhost", "test", NULL, "test");
+        if (!dbh) {
+            exit(EXIT_FAILURE);
+        }
+
+        if (!detNormalizedExpInsert(dbh, -64, -32, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16)) {
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+
+        dbh = psDBInit("localhost", "test", NULL, "test");
+        if (!dbh) {
+            exit(EXIT_FAILURE);
+        }
+
+        if (!detResidImfileInsert(dbh, -64, -32, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16)) {
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+
+        dbh = psDBInit("localhost", "test", NULL, "test");
+        if (!dbh) {
+            exit(EXIT_FAILURE);
+        }
+
+        if (!detResidExpInsert(dbh, -64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", true, -16)) {
             exit(EXIT_FAILURE);
         }
Index: /trunk/ippdb/tests/insertobject.c
===================================================================
--- /trunk/ippdb/tests/insertobject.c	(revision 13620)
+++ /trunk/ippdb/tests/insertobject.c	(revision 13621)
@@ -212,5 +212,5 @@
         }
 
-        object = rawExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32, "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", 32.32, -16);
+        object = rawExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32, "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, 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("a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z", -16);
+        object = rawImfileRowAlloc("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, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", "0001-01-01T00:00:00Z", -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -718,5 +718,5 @@
         }
 
-        object = detProcessedImfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, "a string", -16);
+        object = detProcessedImfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -740,5 +740,5 @@
         }
 
-        object = detProcessedExpRowAlloc(-64, "a string", "a string", 64.64, 64.64, 64.64, "a string", -16);
+        object = detProcessedExpRowAlloc(-64, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -762,5 +762,5 @@
         }
 
-        object = detStackedImfileRowAlloc(-64, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, -16);
+        object = detStackedImfileRowAlloc(-64, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -806,5 +806,5 @@
         }
 
-        object = detNormalizedImfileRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, "a string", -16);
+        object = detNormalizedImfileRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -828,5 +828,5 @@
         }
 
-        object = detNormalizedExpRowAlloc(-64, -32, "a string", 64.64, 64.64, 64.64, "a string", -16);
+        object = detNormalizedExpRowAlloc(-64, -32, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -850,5 +850,5 @@
         }
 
-        object = detResidImfileRowAlloc(-64, -32, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, "a string", -16);
+        object = detResidImfileRowAlloc(-64, -32, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -872,5 +872,5 @@
         }
 
-        object = detResidExpRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, "a string", true, -16);
+        object = detResidExpRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", true, -16);
         if (!object) {
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/metadatafromobject.c
===================================================================
--- /trunk/ippdb/tests/metadatafromobject.c	(revision 13620)
+++ /trunk/ippdb/tests/metadatafromobject.c	(revision 13621)
@@ -384,5 +384,5 @@
         bool            status;
 
-        object = rawExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32, "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", 32.32, -16);
+        object = rawExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32, "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, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", 32.32, -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -451,4 +451,8 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataLookupF32(&status, md, "sat_pixel_frac") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
             psFree(md);
@@ -479,4 +483,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(psMetadataLookupPtr(&status, md, "object"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
@@ -499,5 +523,5 @@
         bool            status;
 
-        object = rawImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z", -16);
+        object = rawImfileRowAlloc("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, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", "0001-01-01T00:00:00Z", -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -551,4 +575,8 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataLookupF32(&status, md, "sat_pixel_frac") == 32.32) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
             psFree(md);
@@ -579,4 +607,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(psMetadataLookupPtr(&status, md, "object"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
@@ -1561,5 +1609,5 @@
         bool            status;
 
-        object = detProcessedImfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, "a string", -16);
+        object = detProcessedImfileRowAlloc(-64, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -1604,4 +1652,36 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
@@ -1620,5 +1700,5 @@
         bool            status;
 
-        object = detProcessedExpRowAlloc(-64, "a string", "a string", 64.64, 64.64, 64.64, "a string", -16);
+        object = detProcessedExpRowAlloc(-64, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -1655,4 +1735,36 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
@@ -1671,5 +1783,5 @@
         bool            status;
 
-        object = detStackedImfileRowAlloc(-64, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, -16);
+        object = detStackedImfileRowAlloc(-64, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -1714,4 +1826,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1765,5 +1897,5 @@
         bool            status;
 
-        object = detNormalizedImfileRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, "a string", -16);
+        object = detNormalizedImfileRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -1804,4 +1936,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
@@ -1820,5 +1972,5 @@
         bool            status;
 
-        object = detNormalizedExpRowAlloc(-64, -32, "a string", 64.64, 64.64, 64.64, "a string", -16);
+        object = detNormalizedExpRowAlloc(-64, -32, "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -1855,4 +2007,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
@@ -1871,5 +2043,5 @@
         bool            status;
 
-        object = detResidImfileRowAlloc(-64, -32, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, "a string", -16);
+        object = detResidImfileRowAlloc(-64, -32, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -1918,4 +2090,40 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataLookupF64(&status, md, "bin_stdev") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(psMetadataLookupPtr(&status, md, "path_base"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
@@ -1934,5 +2142,5 @@
         bool            status;
 
-        object = detResidExpRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, "a string", true, -16);
+        object = detResidExpRowAlloc(-64, -32, "a string", "a string", 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, 64.64, "a string", true, -16);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -1970,4 +2178,40 @@
         }
         if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "bin_stdev") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "fringe_0") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "fringe_1") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "fringe_2") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_1") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_2") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_3") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_4") == 64.64) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataLookupF64(&status, md, "user_5") == 64.64) {
             psFree(md);
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/objectfrommetadata.c
===================================================================
--- /trunk/ippdb/tests/objectfrommetadata.c	(revision 13620)
+++ /trunk/ippdb/tests/objectfrommetadata.c	(revision 13621)
@@ -594,4 +594,8 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "sat_pixel_frac", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
             psFree(md);
@@ -622,4 +626,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddStr(md, PS_LIST_TAIL, "object", 0, NULL, "a string")) {
             psFree(md);
@@ -697,4 +721,8 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->sat_pixel_frac == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (!object->bg == 64.64) {
             psFree(object);
@@ -725,4 +753,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -785,4 +833,8 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddF32(md, PS_LIST_TAIL, "sat_pixel_frac", 0, NULL, 32.32)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
             psFree(md);
@@ -813,4 +865,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddStr(md, PS_LIST_TAIL, "object", 0, NULL, "a string")) {
             psFree(md);
@@ -872,4 +944,8 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->sat_pixel_frac == 32.32) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (!object->bg == 64.64) {
             psFree(object);
@@ -900,4 +976,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -2372,4 +2468,36 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
             psFree(md);
@@ -2419,4 +2547,36 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->fringe_0 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -2458,4 +2618,36 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
             psFree(md);
@@ -2497,4 +2689,36 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->fringe_0 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -2544,4 +2768,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
             psFree(md);
             exit(EXIT_FAILURE);
@@ -2587,4 +2831,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
             psFree(object);
             exit(EXIT_FAILURE);
@@ -2680,4 +2944,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
             psFree(md);
@@ -2723,4 +3007,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -2762,4 +3066,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
             psFree(md);
@@ -2801,4 +3125,24 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -2852,4 +3196,40 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bin_stdev", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
             psFree(md);
@@ -2903,4 +3283,40 @@
             exit(EXIT_FAILURE);
         }
+        if (!object->bin_stdev == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_0 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->path_base, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -2946,4 +3362,40 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bin_stdev", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_0", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_1", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "fringe_2", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_1", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_2", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_3", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_4", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddF64(md, PS_LIST_TAIL, "user_5", 0, NULL, 64.64)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddStr(md, PS_LIST_TAIL, "path_base", 0, NULL, "a string")) {
             psFree(md);
@@ -2990,4 +3442,40 @@
         }
         if (!object->bg_mean_stdev == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->bin_stdev == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_0 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->fringe_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_1 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_2 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_3 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_4 == 64.64) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (!object->user_5 == 64.64) {
             psFree(object);
             exit(EXIT_FAILURE);
