Index: trunk/dbconfig/tasks.md
===================================================================
--- trunk/dbconfig/tasks.md	(revision 15739)
+++ trunk/dbconfig/tasks.md	(revision 15740)
@@ -1,3 +1,3 @@
-# $Id: tasks.md,v 1.141 2007-10-03 03:03:28 jhoblitt Exp $
+# $Id: tasks.md,v 1.142 2007-12-06 01:01:03 eugene Exp $
 
 # this table records all exposure ID ever seen from the summit
@@ -130,4 +130,19 @@
     ccd_temp    F32         0.0
     posang      F64         0.0 
+    M1_x        F32         0.0
+    M1_y        F32         0.0
+    M1_z        F32         0.0
+    M1_tip      F32         0.0
+    M1_tilt     F32         0.0
+    M2_x        F32         0.0
+    M2_y        F32         0.0
+    M2_z        F32         0.0
+    M2_tip      F32         0.0
+    M2_tilt     F32         0.0
+    env_temperature F32         0.0
+    env_humidity    F32         0.0
+    env_wind_speed  F32         0.0
+    env_wind_dir    F32         0.0
+    pon_time        F32         0.0
     user_1      F64         0.0
     user_2      F64         0.0
@@ -167,4 +182,19 @@
     ccd_temp    F32         0.0
     posang      F64         0.0 
+    M1_x        F32         0.0
+    M1_y        F32         0.0
+    M1_z        F32         0.0
+    M1_tip      F32         0.0
+    M1_tilt     F32         0.0
+    M2_x        F32         0.0
+    M2_y        F32         0.0
+    M2_z        F32         0.0
+    M2_tip      F32         0.0
+    M2_tilt     F32         0.0
+    env_temperature F32         0.0
+    env_humidity    F32         0.0
+    env_wind_speed  F32         0.0
+    env_wind_dir    F32         0.0
+    pon_time        F32         0.0
     user_1      F64         0.0
     user_2      F64         0.0
Index: trunk/ippScripts/scripts/register_exp.pl
===================================================================
--- trunk/ippScripts/scripts/register_exp.pl	(revision 15739)
+++ trunk/ippScripts/scripts/register_exp.pl	(revision 15740)
@@ -59,24 +59,39 @@
    [   
        #          PPSTATS KEYWORD         STATISTIC          CHIPTOOL FLAG
-       { name => "exp_name",       type => "constant",   flag => "-exp_name",       dtype => "string" }, # File level
-       { name => "telescope",      type => "constant",   flag => "-telescope",      dtype => "string" }, # File level
-       { name => "camera",         type => "constant",   flag => "-inst",           dtype => "string" }, # File level
-       { name => "filelevel",      type => "constant",   flag => "-filelevel",      dtype => "string" }, # File level
-       { name => "object",         type => "constant",   flag => "-object",         dtype => "string" },
-       { name => "exp_type",       type => "constant",   flag => "-exp_type",       dtype => "string" }, # File level
-       { name => "filter",         type => "constant",   flag => "-filter",         dtype => "string" }, # File level
-       { name => "dateobs",        type => "constant",   flag => "-dateobs",        dtype => "string" }, # File level
-       { name => "ccd_temp",       type => "mean",       flag => "-ccd_temp",       dtype => "float"  }, # CCD temperature
-       { name => "exp_time",       type => "mean",       flag => "-exp_time",       dtype => "float"  }, # Exposure time
-       { name => "sat_pixel_frac", type => "mean",       flag => "-sat_pixel_frac", dtype => "float"  }, # Fraction of saturated pixels
-       { name => "airmass",        type => "mean",       flag => "-airmass",        dtype => "float"  }, # Airmass
-       { name => "ra",             type => "mean",       flag => "-ra",             dtype => "float"  }, # Right ascension
-       { name => "decl",           type => "mean",       flag => "-decl",           dtype => "float"  }, # Declination
-       { name => "posang",         type => "mean",       flag => "-posang",         dtype => "float"  }, # Position angle
-       { name => "alt",            type => "mean",       flag => "-alt",            dtype => "float"  }, # Altitude
-       { name => "az",             type => "mean",       flag => "-az",             dtype => "float"  }, # Azimuth
-       { name => "bg",             type => "mean",       flag => "-bg",             dtype => "float"  }, # background
-       { name => "bg",             type => "stdev",      flag => "-bg_mean_stdev",  dtype => "float"  }, # Azimuth
-       { name => "bg_stdev",       type => "rms",        flag => "-bg_stdev",       dtype => "float"  }, # Azimuth
+       { name => "exp_name",        type => "constant",   flag => "-exp_name",        dtype => "string" }, # File level
+       { name => "telescope",       type => "constant",   flag => "-telescope",       dtype => "string" }, # File level
+       { name => "camera",          type => "constant",   flag => "-inst",            dtype => "string" }, # File level
+       { name => "filelevel",       type => "constant",   flag => "-filelevel",       dtype => "string" }, # File level
+       { name => "object",          type => "constant",   flag => "-object",          dtype => "string" },
+       { name => "exp_type",        type => "constant",   flag => "-exp_type",        dtype => "string" }, # File level
+       { name => "filter",          type => "constant",   flag => "-filter",          dtype => "string" }, # File level
+       { name => "dateobs",         type => "constant",   flag => "-dateobs",         dtype => "string" }, # File level
+       { name => "ccd_temp",        type => "mean",       flag => "-ccd_temp",        dtype => "float"  }, # CCD temperature
+       { name => "exp_time",        type => "mean",       flag => "-exp_time",        dtype => "float"  }, # Exposure time
+       { name => "sat_pixel_frac",  type => "mean",       flag => "-sat_pixel_frac",  dtype => "float"  }, # Fraction of saturated pixels
+       { name => "airmass",         type => "mean",       flag => "-airmass",         dtype => "float"  }, # Airmass
+       { name => "ra",              type => "mean",       flag => "-ra",              dtype => "float"  }, # Right ascension
+       { name => "decl",            type => "mean",       flag => "-decl",            dtype => "float"  }, # Declination
+       { name => "posang",          type => "mean",       flag => "-posang",          dtype => "float"  }, # Position angle
+       { name => "alt",             type => "mean",       flag => "-alt",             dtype => "float"  }, # Altitude
+       { name => "az",              type => "mean",       flag => "-az",              dtype => "float"  }, # Azimuth
+       { name => "M1_x",            type => "constant",   flag => "-M1_x",            dtype => "float"  }, # M1X
+       { name => "M1_y",            type => "constant",   flag => "-M1_y",            dtype => "float"  }, # M1Y
+       { name => "M1_z",            type => "constant",   flag => "-M1_z",            dtype => "float"  }, # M1Z
+       { name => "M1_tip",          type => "constant",   flag => "-M1_tip",          dtype => "float"  }, # M1TIP
+       { name => "M1_tilt",         type => "constant",   flag => "-M1_tilt",         dtype => "float"  }, # M1TILT
+       { name => "M2_x",            type => "constant",   flag => "-M2_x",            dtype => "float"  }, # M2X
+       { name => "M2_y",            type => "constant",   flag => "-M2_y",            dtype => "float"  }, # M2Y
+       { name => "M2_z",            type => "constant",   flag => "-M2_z",            dtype => "float"  }, # M2Z
+       { name => "M2_tip",          type => "constant",   flag => "-M2_tip",          dtype => "float"  }, # M2TIP
+       { name => "M2_tilt",         type => "constant",   flag => "-M2_tilt",         dtype => "float"  }, # M2TILT
+       { name => "env_temperature", type => "constant",   flag => "-env_temperature", dtype => "float"  }, # external temp
+       { name => "env_humidity",    type => "constant",   flag => "-env_humidity",    dtype => "float"  }, # external humidity
+       { name => "env_wind_speed",  type => "constant",   flag => "-env_wind_speed",  dtype => "float"  }, # external wind speed
+       { name => "env_wind_dir",    type => "constant",   flag => "-env_wind_dir",    dtype => "float"  }, # external wind direction
+       { name => "pon_time",        type => "constant",   flag => "-pon_time",        dtype => "float"  }, # time since last power on
+       { name => "bg",              type => "mean",       flag => "-bg",              dtype => "float"  }, # background
+       { name => "bg",              type => "stdev",      flag => "-bg_mean_stdev",   dtype => "float"  }, # Azimuth
+       { name => "bg_stdev",        type => "rms",        flag => "-bg_stdev",        dtype => "float"  }, # Azimuth
        ];
 my $stats = PS::IPP::Metadata::Stats->new($STATS); # Stats parser
Index: trunk/ippScripts/scripts/register_imfile.pl
===================================================================
--- trunk/ippScripts/scripts/register_imfile.pl	(revision 15739)
+++ trunk/ippScripts/scripts/register_imfile.pl	(revision 15740)
@@ -64,24 +64,39 @@
    [   
        #          PPSTATS KEYWORD         STATISTIC          CHIPTOOL FLAG
-       { name => "FILE.LEVEL",     type => "constant", flag => "-filelevel",      dtype => "string" }, # File level
-       { name => "CLASS.ID",       type => "constant", flag => "-class_id",       dtype => "string" }, # Real Class ID
-       { name => "FPA.OBJECT",     type => "constant", flag => "-object",         dtype => "string" }, # Object
-       { name => "FPA.OBSTYPE",    type => "constant", flag => "-exp_type",       dtype => "string" }, # Exposure type
-       { name => "FPA.FILTER",     type => "constant", flag => "-filter",         dtype => "string" }, # Filter used
-       { name => "FPA.AIRMASS",    type => "constant", flag => "-airmass",        dtype => "float"  }, # Airmass
-       { name => "FPA.RA",         type => "constant", flag => "-ra",             dtype => "float"  }, # Right ascension
-       { name => "FPA.DEC",        type => "constant", flag => "-decl",           dtype => "float"  }, # Declination
-       { name => "FPA.ALT",        type => "constant", flag => "-alt",            dtype => "float"  }, # Altitude
-       { name => "FPA.AZ",         type => "constant", flag => "-az",             dtype => "float"  }, # Azimuth
-       { name => "FPA.POSANGLE",   type => "constant", flag => "-posang",         dtype => "float"  }, # Position angle
-       { name => "FPA.TIME",       type => "constant", flag => "-dateobs",        dtype => "string" }, # Date of observation (UTC)
-       { name => "FPA.TELESCOPE",  type => "constant", flag => "-telescope",      dtype => "string" }, # Telescope
-       { name => "FPA.INSTRUMENT", type => "constant", flag => "-inst",           dtype => "string" }, # Instrument 
-       { name => "CHIP.TEMP",      type => "mean",     flag => "-ccd_temp",       dtype => "float"  }, # CCD temperature
-       { name => "CELL.EXPOSURE",  type => "mean",     flag => "-exp_time",       dtype => "float"  }, # Exposure time
-       { name => "SAT_PIXEL_FRAC", type => "mean",     flag => "-sat_pixel_frac", dtype => "float"  }, # fraction of saturated pixels
-       { name => "ROBUST_MEDIAN",  type => "mean",     flag => "-bg",             dtype => "float"  },
-       { name => "ROBUST_MEDIAN",  type => "stdev",    flag => "-bg_mean_stdev",  dtype => "float"  },
-       { name => "ROBUST_STDEV",   type => "rms",      flag => "-bg_stdev",       dtype => "float"  },
+       { name => "FILE.LEVEL",     type => "constant", flag => "-filelevel",       dtype => "string" }, # File level
+       { name => "CLASS.ID",       type => "constant", flag => "-class_id",        dtype => "string" }, # Real Class ID
+       { name => "FPA.OBJECT",     type => "constant", flag => "-object",          dtype => "string" }, # Object
+       { name => "FPA.OBSTYPE",    type => "constant", flag => "-exp_type",        dtype => "string" }, # Exposure type
+       { name => "FPA.FILTER",     type => "constant", flag => "-filter",          dtype => "string" }, # Filter used
+       { name => "FPA.AIRMASS",    type => "constant", flag => "-airmass",         dtype => "float"  }, # Airmass
+       { name => "FPA.RA",         type => "constant", flag => "-ra",              dtype => "float"  }, # Right ascension
+       { name => "FPA.DEC",        type => "constant", flag => "-decl",            dtype => "float"  }, # Declination
+       { name => "FPA.ALT",        type => "constant", flag => "-alt",             dtype => "float"  }, # Altitude
+       { name => "FPA.AZ",         type => "constant", flag => "-az",              dtype => "float"  }, # Azimuth
+       { name => "FPA.POSANGLE",   type => "constant", flag => "-posang",          dtype => "float"  }, # Position angle
+       { name => "FPA.TIME",       type => "constant", flag => "-dateobs",         dtype => "string" }, # Date of observation (UTC)
+       { name => "FPA.TELESCOPE",  type => "constant", flag => "-telescope",       dtype => "string" }, # Telescope
+       { name => "FPA.INSTRUMENT", type => "constant", flag => "-inst",            dtype => "string" }, # Instrument 
+       { name => "FPA.M1X",        type => "constant", flag => "-M1_x",            dtype => "float"  }, # M1X
+       { name => "FPA.M1Y",        type => "constant", flag => "-M1_y",            dtype => "float"  }, # M1Y
+       { name => "FPA.M1Z",        type => "constant", flag => "-M1_z",            dtype => "float"  }, # M1Z
+       { name => "FPA.M1TIP",      type => "constant", flag => "-M1_tip",          dtype => "float"  }, # M1TIP
+       { name => "FPA.M1TILT",     type => "constant", flag => "-M1_tilt",         dtype => "float"  }, # M1TILT
+       { name => "FPA.M2X",        type => "constant", flag => "-M2_x",            dtype => "float"  }, # M2X
+       { name => "FPA.M2Y",        type => "constant", flag => "-M2_y",            dtype => "float"  }, # M2Y
+       { name => "FPA.M2Z",        type => "constant", flag => "-M2_z",            dtype => "float"  }, # M2Z
+       { name => "FPA.M2TIP",      type => "constant", flag => "-M2_tip",          dtype => "float"  }, # M2TIP
+       { name => "FPA.M2TILT",     type => "constant", flag => "-M2_tilt",         dtype => "float"  }, # M2TILT
+       { name => "FPA.ENV.TEMP",   type => "constant", flag => "-env_temperature", dtype => "float"  }, # external temp
+       { name => "FPA.ENV.HUMID",  type => "constant", flag => "-env_humidity",    dtype => "float"  }, # external humidity
+       { name => "FPA.ENV.WIND",   type => "constant", flag => "-env_wind_speed",  dtype => "float"  }, # external wind speed
+       { name => "FPA.ENV.DIR",    type => "constant", flag => "-env_wind_dir",    dtype => "float"  }, # external wind direction
+       { name => "FPA.PON.TIME",   type => "constant", flag => "-pon_time",        dtype => "float"  }, # time since last power on
+       { name => "CHIP.TEMP",      type => "mean",     flag => "-ccd_temp",        dtype => "float"  }, # CCD temperature
+       { name => "CELL.EXPOSURE",  type => "mean",     flag => "-exp_time",        dtype => "float"  }, # Exposure time
+       { name => "SAT_PIXEL_FRAC", type => "mean",     flag => "-sat_pixel_frac",  dtype => "float"  }, # fraction of saturated pixels
+       { name => "ROBUST_MEDIAN",  type => "mean",     flag => "-bg",              dtype => "float"  },
+       { name => "ROBUST_MEDIAN",  type => "stdev",    flag => "-bg_mean_stdev",   dtype => "float"  },
+       { name => "ROBUST_STDEV",   type => "rms",      flag => "-bg_stdev",        dtype => "float"  },
    ];
 my $stats = PS::IPP::Metadata::Stats->new($STATS); # Stats parser
Index: trunk/ippTools/src/regtool.c
===================================================================
--- trunk/ippTools/src/regtool.c	(revision 15739)
+++ trunk/ippTools/src/regtool.c	(revision 15740)
@@ -1095,4 +1095,83 @@
     }
 
+    psF32 M1_x = psMetadataLookupF32(&status, config->args, "-M1_x");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M1_x");
+        return false;
+    }
+    psF32 M1_y = psMetadataLookupF32(&status, config->args, "-M1_y");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M1_y");
+        return false;
+    }
+    psF32 M1_z = psMetadataLookupF32(&status, config->args, "-M1_z");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M1_z");
+        return false;
+    }
+    psF32 M1_tip = psMetadataLookupF32(&status, config->args, "-M1_tip");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M1_tip");
+        return false;
+    }
+    psF32 M1_tilt = psMetadataLookupF32(&status, config->args, "-M1_tilt");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M1_tilt");
+        return false;
+    }
+
+    psF32 M2_x = psMetadataLookupF32(&status, config->args, "-M2_x");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M2_x");
+        return false;
+    }
+    psF32 M2_y = psMetadataLookupF32(&status, config->args, "-M2_y");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M2_y");
+        return false;
+    }
+    psF32 M2_z = psMetadataLookupF32(&status, config->args, "-M2_z");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M2_z");
+        return false;
+    }
+    psF32 M2_tip = psMetadataLookupF32(&status, config->args, "-M2_tip");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M2_tip");
+        return false;
+    }
+    psF32 M2_tilt = psMetadataLookupF32(&status, config->args, "-M2_tilt");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M2_tilt");
+        return false;
+    }
+
+    psF32 env_temp = psMetadataLookupF32(&status, config->args, "-env_temperature");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_temperature");
+        return false;
+    }
+    psF32 env_humid = psMetadataLookupF32(&status, config->args, "-env_humidity");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_humidity");
+        return false;
+    }
+    psF32 env_wind = psMetadataLookupF32(&status, config->args, "-env_wind_speed");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_wind_speed");
+        return false;
+    }
+    psF32 env_dir = psMetadataLookupF32(&status, config->args, "-env_wind_dir");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_wind_dir");
+        return false;
+    }
+
+    psF32 pon_time = psMetadataLookupF32(&status, config->args, "-pon_time");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -pon_time");
+        return false;
+    }
+
     psF64 user_1 = psMetadataLookupF64(&status, config->args, "-user_1");
     if (!status) {
@@ -1173,4 +1252,19 @@
         ccd_temp,
         posang,
+	M1_x,
+	M1_y,
+	M1_z,
+	M1_tip,
+	M1_tilt,
+	M2_x,
+	M2_y,
+	M2_z,
+	M2_tip,
+	M2_tilt,
+	env_temp,
+	env_humid,
+	env_wind,
+	env_dir,
+	pon_time,
         user_1,
         user_2,
@@ -1336,4 +1430,83 @@
     if (!status) {
         psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -posang");
+        return false;
+    }
+
+    psF32 M1_x = psMetadataLookupF32(&status, config->args, "-M1_x");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M1_x");
+        return false;
+    }
+    psF32 M1_y = psMetadataLookupF32(&status, config->args, "-M1_y");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M1_y");
+        return false;
+    }
+    psF32 M1_z = psMetadataLookupF32(&status, config->args, "-M1_z");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M1_z");
+        return false;
+    }
+    psF32 M1_tip = psMetadataLookupF32(&status, config->args, "-M1_tip");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M1_tip");
+        return false;
+    }
+    psF32 M1_tilt = psMetadataLookupF32(&status, config->args, "-M1_tilt");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M1_tilt");
+        return false;
+    }
+
+    psF32 M2_x = psMetadataLookupF32(&status, config->args, "-M2_x");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M2_x");
+        return false;
+    }
+    psF32 M2_y = psMetadataLookupF32(&status, config->args, "-M2_y");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M2_y");
+        return false;
+    }
+    psF32 M2_z = psMetadataLookupF32(&status, config->args, "-M2_z");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M2_z");
+        return false;
+    }
+    psF32 M2_tip = psMetadataLookupF32(&status, config->args, "-M2_tip");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M2_tip");
+        return false;
+    }
+    psF32 M2_tilt = psMetadataLookupF32(&status, config->args, "-M2_tilt");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -M2_tilt");
+        return false;
+    }
+
+    psF32 env_temp = psMetadataLookupF32(&status, config->args, "-env_temperature");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_temperature");
+        return false;
+    }
+    psF32 env_humid = psMetadataLookupF32(&status, config->args, "-env_humidity");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_humidity");
+        return false;
+    }
+    psF32 env_wind = psMetadataLookupF32(&status, config->args, "-env_wind_speed");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_wind_speed");
+        return false;
+    }
+    psF32 env_dir = psMetadataLookupF32(&status, config->args, "-env_wind_dir");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_wind_dir");
+        return false;
+    }
+
+    psF32 pon_time = psMetadataLookupF32(&status, config->args, "-pon_time");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -pon_time");
         return false;
     }
@@ -1416,4 +1589,19 @@
         ccd_temp,
         posang,
+	M1_x,
+	M1_y,
+	M1_z,
+	M1_tip,
+	M1_tilt,
+	M2_x,
+	M2_y,
+	M2_z,
+	M2_tip,
+	M2_tilt,
+	env_temp,
+	env_humid,
+	env_wind,
+	env_dir,
+	pon_time,
         user_1,
         user_2,
Index: trunk/ippTools/src/regtoolConfig.c
===================================================================
--- trunk/ippTools/src/regtoolConfig.c	(revision 15739)
+++ trunk/ippTools/src/regtoolConfig.c	(revision 15740)
@@ -103,4 +103,34 @@
     psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-posang",  0,
         "define rotator position angle", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-M1_x",  0,
+            "define M1 X position", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-M1_y",  0,
+            "define M1 Y position", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-M1_z",  0,
+            "define M1 Z position", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-M1_tip",  0,
+            "define M1 TIP position", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-M1_tilt",  0,
+            "define M1 TILT position", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-M2_x",  0,
+            "define M2 X position", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-M2_y",  0,
+            "define M2 Y position", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-M2_z",  0,
+            "define M2 Z position", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-M2_tip",  0,
+            "define M2 TIP position", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-M2_tilt",  0,
+            "define M2 TILT position", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-env_temperature",  0,
+            "define Environmental Temperature", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-env_humidity",  0,
+            "define Environmental Humidity", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-env_wind_speed",  0,
+            "define Environmental Wind Speed", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-env_wind_dir",  0,
+            "define Environmental Wind Direction", NAN);
+    psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-pon_time",  0,
+            "define time to last Power On", NAN);
     psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-user_1",  0,
             "define user statistic (1)", NAN);
@@ -216,4 +246,34 @@
     psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-posang",  0,
         "define rotator position angle", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-M1_x",  0,
+            "define M1 X position", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-M1_y",  0,
+            "define M1 Y position", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-M1_z",  0,
+            "define M1 Z position", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-M1_tip",  0,
+            "define M1 TIP position", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-M1_tilt",  0,
+            "define M1 TILT position", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-M2_x",  0,
+            "define M2 X position", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-M2_y",  0,
+            "define M2 Y position", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-M2_z",  0,
+            "define M2 Z position", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-M2_tip",  0,
+            "define M2 TIP position", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-M2_tilt",  0,
+            "define M2 TILT position", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-env_temperature",  0,
+            "define Environmental Temperature", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-env_humidity",  0,
+            "define Environmental Humidity", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-env_wind_speed",  0,
+            "define Environmental Wind Speed", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-env_wind_dir",  0,
+            "define Environmental Wind Direction", NAN);
+    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-pon_time",  0,
+            "define time to last Power On", NAN);
     psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-user_1",  0,
             "define user statistic (1)", NAN);
Index: trunk/ippconfig/gpc1/format_raw.config
===================================================================
--- trunk/ippconfig/gpc1/format_raw.config	(revision 15739)
+++ trunk/ippconfig/gpc1/format_raw.config	(revision 15740)
@@ -182,4 +182,19 @@
 	FPA.AZ		STR	AZ
 	FPA.TEMP	STR	DETTEM
+	FPA.M1X         STR     M1X
+	FPA.M1Y         STR     M1Y   
+	FPA.M1Z         STR     M1Z   
+	FPA.M1TIP       STR     M1TIP 
+	FPA.M1TILT      STR     M1TILT
+	FPA.M2X         STR     M2X
+	FPA.M2Y         STR     M2Y   
+	FPA.M2Z         STR     M2Z   
+	FPA.M2TIP       STR     M2TIP 
+	FPA.M2TILT      STR     M2TILT
+	FPA.ENV.TEMP    STR     ENVTEM
+	FPA.ENV.HUMID   STR     ENVHUM
+	FPA.ENV.WIND    STR     ENVWIN
+	FPA.ENV.DIR     STR     ENVDIR
+	FPA.PON.TIME    STR     PONTIME
 	CHIP.ID         STR	DETECTOR
 	CELL.XBIN	STR	CCDSUM
@@ -463,5 +478,5 @@
 #	CELL.TIME	STR	MJD-OBS
 #	CELL.TIMESYS	STR	TIMESYS
-#	CELL.SATURATION	STR	60000
+	CELL.SATURATION	STR	40000
 END
 
Index: trunk/ippconfig/gpc1/ppImage.config
===================================================================
--- trunk/ippconfig/gpc1/ppImage.config	(revision 15739)
+++ trunk/ippconfig/gpc1/ppImage.config	(revision 15740)
@@ -13,4 +13,49 @@
 ## XXX use these local variations until we are building real detrend images
 
+# Overscan, bias
+PPIMAGE_OB         METADATA
+  BASE.FITS        BOOL    TRUE            # Save base detrended image?
+  BASE.MASK.FITS   BOOL    FALSE           # Save base detrended image?
+  BASE.WEIGHT.FITS BOOL    FALSE           # Save base detrended image?
+  CHIP.FITS        BOOL    FALSE           # Save chip-mosaic-ed image? 
+  CHIP.MASK.FITS   BOOL    FALSE           # Save chip-mosaic-ed image? 
+  CHIP.WEIGHT.FITS BOOL    FALSE           # Save chip-mosaic-ed image? 
+  OVERSCAN         BOOL    TRUE            # Overscan subtraction
+  BIAS             BOOL    FALSE           # Bias subtraction
+  DARK             BOOL    FALSE           # Dark subtraction
+  SHUTTER          BOOL    FALSE           # Shutter correction
+  FLAT             BOOL    FALSE           # Flat-field normalisation
+  MASK             BOOL    FALSE           # Mask bad pixels
+  FRINGE           BOOL    FALSE           # Fringe subtraction
+  PHOTOM           BOOL    FALSE           # Source identification and photometry
+  ASTROM.CHIP      BOOL    FALSE           # Astrometry per chip?
+  ASTROM.MOSAIC    BOOL    FALSE           # Astrometry for mosaic?
+  BIN1.FITS        BOOL    TRUE            # Save 1st binned chip image?
+  BIN2.FITS        BOOL    TRUE            # Save 2nd binned chip image?
+END
+
+# Overscan, bias, dark
+PPIMAGE_OBD        METADATA
+  BASE.FITS        BOOL    TRUE            # Save base detrended image?
+  BASE.MASK.FITS   BOOL    FALSE           # Save base detrended image?
+  BASE.WEIGHT.FITS BOOL    FALSE           # Save base detrended image?
+  CHIP.FITS        BOOL    FALSE           # Save chip-mosaic-ed image? 
+  CHIP.MASK.FITS   BOOL    FALSE           # Save chip-mosaic-ed image? 
+  CHIP.WEIGHT.FITS BOOL    FALSE           # Save chip-mosaic-ed image? 
+  OVERSCAN         BOOL    TRUE            # Overscan subtraction
+  BIAS             BOOL    FALSE           # Bias subtraction
+  DARK             BOOL    TRUE            # Dark subtraction
+  SHUTTER          BOOL    FALSE           # Shutter correction
+  FLAT             BOOL    FALSE           # Flat-field normalisation
+  MASK             BOOL    FALSE           # Mask bad pixels
+  FRINGE           BOOL    FALSE           # Fringe subtraction
+  PHOTOM           BOOL    FALSE           # Source identification and photometry
+  ASTROM.CHIP      BOOL    FALSE           # Astrometry per chip?
+  ASTROM.MOSAIC    BOOL    FALSE           # Astrometry for mosaic?
+  BIN1.FITS        BOOL    TRUE            # Save 1st binned chip image?
+  BIN2.FITS        BOOL    TRUE            # Save 2nd binned chip image?
+END
+
+
 # Overscan, bias, dark, shutter, flat-field, fringe, photom, astrom
 PPIMAGE_OBDSFRP    METADATA
@@ -22,5 +67,5 @@
   CHIP.WEIGHT.FITS BOOL    FALSE           # Save chip-mosaic-ed image? 
   OVERSCAN         BOOL    TRUE            # Overscan subtraction
-  BIAS             BOOL    TRUE            # Bias subtraction
+  BIAS             BOOL    FALSE           # Bias subtraction
   DARK             BOOL    FALSE           # Dark subtraction
   SHUTTER          BOOL    FALSE           # Shutter correction
@@ -44,5 +89,5 @@
   CHIP.WEIGHT.FITS BOOL    FALSE           # Save chip-mosaic-ed image? 
   OVERSCAN         BOOL    TRUE            # Overscan subtraction
-  BIAS             BOOL    TRUE            # Bias subtraction
+  BIAS             BOOL    FALSE           # Bias subtraction
   DARK             BOOL    FALSE           # Dark subtraction
   SHUTTER          BOOL    FALSE           # Shutter correction
Index: trunk/ippconfig/recipes/ppStats.config
===================================================================
--- trunk/ippconfig/recipes/ppStats.config	(revision 15739)
+++ trunk/ippconfig/recipes/ppStats.config	(revision 15740)
@@ -55,10 +55,10 @@
 END
 
-### ppStats recipe for Phase 0
+### ppStats recipe for injection
 INJECT  METADATA
   CONCEPT       MULTI
 END
 
-### ppStats recipe for Phase 0
+### ppStats recipe for registration
 REGISTER  	METADATA
   CONCEPT       MULTI
@@ -78,4 +78,21 @@
   CONCEPT       STR     CHIP.TEMP       # Detector temperature
   CONCEPT       STR     CELL.EXPOSURE   # Exposure time
+
+  CONCEPT       STR     FPA.M1X         # Primary x position
+  CONCEPT       STR	FPA.M1Y         # Primary y position
+  CONCEPT       STR	FPA.M1Z         # Primary z position
+  CONCEPT       STR	FPA.M1TIP       # Primary tip
+  CONCEPT       STR	FPA.M1TILT      # Primary tilt
+  CONCEPT       STR	FPA.M2X         # Secondary x position
+  CONCEPT       STR	FPA.M2Y         # Secondary y position
+  CONCEPT       STR	FPA.M2Z         # Secondary z position
+  CONCEPT       STR	FPA.M2TIP       # Secondary tip position
+  CONCEPT       STR	FPA.M2TILT      # Secondary tilt position
+  CONCEPT       STR	FPA.ENV.TEMP    # external temperature
+  CONCEPT       STR	FPA.ENV.HUMID   # external humidity
+  CONCEPT       STR	FPA.ENV.WIND    # external wind speed
+  CONCEPT       STR	FPA.ENV.DIR     # external wind direction
+  CONCEPT       STR	FPA.PON.TIME    # time since last power on
+
   STAT          STR     ROBUST_MEDIAN   # Background estimator
   STAT          STR     ROBUST_STDEV    # Background standard deviation estimator
Index: trunk/psModules/src/concepts/pmConcepts.c
===================================================================
--- trunk/psModules/src/concepts/pmConcepts.c	(revision 15739)
+++ trunk/psModules/src/concepts/pmConcepts.c	(revision 15740)
@@ -622,4 +622,87 @@
             pmConceptRegister(fpaTemp, NULL, NULL, false, PM_FPA_LEVEL_FPA);
             psFree(fpaTemp);
+        }
+
+        // FPA.M1X,Y,Z,TIP,TILT
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.M1X", "Primary Mirror X Position", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
+        }
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.M1Y", "Primary Mirror Y Position", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
+        }
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.M1Z", "Primary Mirror Z Position", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
+        }
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.M1TIP", "Primary Mirror TIP", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
+        }
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.M1TILT", "Primary Mirror TILT", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
+        }
+
+        // FPA.M2X,Y,Z,TIP,TILT
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.M2X", "Primary Mirror X Position", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
+        }
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.M2Y", "Primary Mirror Y Position", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
+        }
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.M2Z", "Primary Mirror Z Position", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
+        }
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.M2TIP", "Primary Mirror TIP", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
+        }
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.M2TILT", "Primary Mirror TILT", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
+        }
+
+        // FPA.ENV.*
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.ENV.TEMP", "Environment: Temperature", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
+        }
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.ENV.HUMID", "Environment: Humidity", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
+        }
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.ENV.WIND", "Environment: Wind Speed", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
+        }
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.ENV.DIR", "Environment: Wind Direction", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
+        }
+
+	// FPA.PON.TIME
+        {
+            psMetadataItem *item = psMetadataItemAllocF32("FPA.PON.TIME", "Power On Time", NAN);
+            pmConceptRegister(item, NULL, NULL, false, PM_FPA_LEVEL_FPA);
+            psFree(item);
         }
 
