Index: branches/eam_branches/ipp-20121219/Ohana/src/libdvo/include/dvo.h
===================================================================
--- branches/eam_branches/ipp-20121219/Ohana/src/libdvo/include/dvo.h	(revision 34896)
+++ branches/eam_branches/ipp-20121219/Ohana/src/libdvo/include/dvo.h	(revision 34898)
@@ -367,4 +367,6 @@
   float          Xccd;
   float          Yccd;
+  float          Xfix;
+  float          Yfix;
   float          dt;
   int   	 t;
Index: branches/eam_branches/ipp-20121219/Ohana/src/libdvo/src/dvo_tiny_values.c
===================================================================
--- branches/eam_branches/ipp-20121219/Ohana/src/libdvo/src/dvo_tiny_values.c	(revision 34896)
+++ branches/eam_branches/ipp-20121219/Ohana/src/libdvo/src/dvo_tiny_values.c	(revision 34898)
@@ -20,4 +20,6 @@
   measureT[0].Xccd       = measure[0].Xccd;
   measureT[0].Yccd       = measure[0].Yccd;
+  measureT[0].Xfix       = measure[0].Xfix;
+  measureT[0].Yfix       = measure[0].Yfix;
   measureT[0].t          = measure[0].t;
   measureT[0].dt         = measure[0].dt;
Index: branches/eam_branches/ipp-20121219/Ohana/src/opihi/cmd.data/spline.c
===================================================================
--- branches/eam_branches/ipp-20121219/Ohana/src/opihi/cmd.data/spline.c	(revision 34896)
+++ branches/eam_branches/ipp-20121219/Ohana/src/opihi/cmd.data/spline.c	(revision 34898)
@@ -2,4 +2,5 @@
 
 int spline_list (int argc, char **argv);
+int spline_help (int argc, char **argv);
 int spline_create (int argc, char **argv);
 int spline_apply (int argc, char **argv);
@@ -7,7 +8,9 @@
 int spline_save (int argc, char **argv);
 int spline_delete (int argc, char **argv);
+int spline_rename (int argc, char **argv);
 int spline_getspline (int argc, char **argv);
 
 static Command spline_commands[] = {
+  {1, "help",       spline_help,       "list spline help info"},
   {1, "list",       spline_list,       "list splines"},
   {1, "create",     spline_create,     "create a spline"},
@@ -16,5 +19,21 @@
   {1, "save",       spline_save,       "read a spline from a FITS file"},
   {1, "delete",     spline_delete,     "delete a spline"},
+  {1, "rename",     spline_rename,     "rename a spline"},
 };
+
+int spline_help (int argc, char **argv) {
+
+  gprint (GP_ERR, "USAGE: spline (command)\n");
+  gprint (GP_ERR, "    spline help                                  : this listing\n");
+  gprint (GP_ERR, "    spline list                                  : list splines\n");
+  gprint (GP_ERR, "    spline create (spline) (Xknots) (Yknots)     : create a spline\n");
+  gprint (GP_ERR, "    spline apply  (spline) (Xpts) (Ypts)         : apply a spline to Xpts to get Ypts\n");
+  gprint (GP_ERR, "    spline delete (spline)                       : delete named spline\n");
+  gprint (GP_ERR, "    spline rename (spline) (new)                 : change spline name to new name\n");
+  gprint (GP_ERR, "    spline load   (spline) (filename)            : load a spline from a FITS file\n");
+  gprint (GP_ERR, "    spline save   (spline) (filename) [-append]  : save a spline in FITS format\n");
+
+  return FALSE;
+}
 
 int spline_command (int argc, char **argv) {
@@ -23,11 +42,5 @@
 
   if (argc < 2) {
-    gprint (GP_ERR, "USAGE: spline (command)\n");
-    gprint (GP_ERR, "    spline list                                  : list splines\n");
-    gprint (GP_ERR, "    spline create (spline) (Xknots) (Yknots)     : create a spline\n");
-    gprint (GP_ERR, "    spline apply  (spline) (Xpts) (Ypts)         : apply a spline to Xpts to get Ypts\n");
-    gprint (GP_ERR, "    spline delete (spline)                       : delete named spline\n");
-    gprint (GP_ERR, "    spline load   (spline) (filename)            : load a spline from a FITS file\n");
-    gprint (GP_ERR, "    spline save   (spline) (filename) [-append]  : save a spline in FITS format\n");
+    spline_help(0,NULL);
     return (FALSE);
   }
Index: branches/eam_branches/ipp-20121219/Ohana/src/opihi/cmd.data/spline_commands.c
===================================================================
--- branches/eam_branches/ipp-20121219/Ohana/src/opihi/cmd.data/spline_commands.c	(revision 34896)
+++ branches/eam_branches/ipp-20121219/Ohana/src/opihi/cmd.data/spline_commands.c	(revision 34898)
@@ -126,4 +126,24 @@
 }
 
+int spline_rename (int argc, char **argv) {
+
+  Spline *spline;
+
+  if (argc != 3) {
+    gprint (GP_ERR, "USAGE: spline rename (spline) (newname)\n");
+    return FALSE;
+  }
+
+  spline = FindSpline (argv[1]);
+  if (spline == NULL) {
+    gprint (GP_ERR, "spline %s not found\n", argv[1]);
+    return FALSE;
+  }
+
+  free (spline->name);
+  spline->name = strcreate (argv[2]);
+  return TRUE;
+}
+
 /* 
 int spline_listspline (int argc, char **argv) {
Index: branches/eam_branches/ipp-20121219/Ohana/src/relastro/include/relastro.h
===================================================================
--- branches/eam_branches/ipp-20121219/Ohana/src/relastro/include/relastro.h	(revision 34896)
+++ branches/eam_branches/ipp-20121219/Ohana/src/relastro/include/relastro.h	(revision 34898)
@@ -157,4 +157,6 @@
 int    VERBOSE;
 int    VERBOSE2;
+
+int    USE_FIXED_PIXCOORDS;
 
 int    RESET;
Index: branches/eam_branches/ipp-20121219/Ohana/src/relastro/src/BrightCatalog.c
===================================================================
--- branches/eam_branches/ipp-20121219/Ohana/src/relastro/src/BrightCatalog.c	(revision 34896)
+++ branches/eam_branches/ipp-20121219/Ohana/src/relastro/src/BrightCatalog.c	(revision 34898)
@@ -76,4 +76,6 @@
     GET_COLUMN(Xccd,      "X_CCD",    	float);
     GET_COLUMN(Yccd,      "Y_CCD",    	float);
+    GET_COLUMN(Xfix,      "X_FIX",    	float);
+    GET_COLUMN(Yfix,      "Y_FIX",    	float);
     GET_COLUMN(dt,        "EXPTIME",  	float);
     GET_COLUMN(t,         "TIME",     	int);
@@ -98,4 +100,6 @@
       measure[i].Xccd      = Xccd[i];
       measure[i].Yccd      = Yccd[i];
+      measure[i].Xfix      = Xfix[i];
+      measure[i].Yfix      = Yfix[i];
       measure[i].dt        = dt[i];
       measure[i].t         = t[i];
@@ -117,4 +121,6 @@
     free (Xccd    );
     free (Yccd    );
+    free (Xfix    );
+    free (Yfix    );
     free (dt      );
     free (t       );
@@ -363,4 +369,6 @@
     float *Xccd      ; ALLOCATE (Xccd     ,  float, catalog->Nmeasure);
     float *Yccd      ; ALLOCATE (Yccd     ,  float, catalog->Nmeasure);
+    float *Xfix      ; ALLOCATE (Xfix     ,  float, catalog->Nmeasure);
+    float *Yfix      ; ALLOCATE (Yfix     ,  float, catalog->Nmeasure);
     float *dt        ; ALLOCATE (dt       ,  float, catalog->Nmeasure);
     int   *t         ; ALLOCATE (t        ,  int  , catalog->Nmeasure);
@@ -383,4 +391,6 @@
       Xccd[i]     = measure[i].Xccd     ;
       Yccd[i]     = measure[i].Yccd     ;
+      Xfix[i]     = measure[i].Xfix     ;
+      Yfix[i]     = measure[i].Yfix     ;
       dt[i]       = measure[i].dt       ;
       t[i] 	  = measure[i].t        ;
@@ -402,4 +412,6 @@
     gfits_set_bintable_column (&theader, &ftable, "X_CCD",    	Xccd,      catalog->Nmeasure);
     gfits_set_bintable_column (&theader, &ftable, "Y_CCD",    	Yccd,      catalog->Nmeasure);
+    gfits_set_bintable_column (&theader, &ftable, "X_FIX",    	Xfix,      catalog->Nmeasure);
+    gfits_set_bintable_column (&theader, &ftable, "Y_FIX",    	Yfix,      catalog->Nmeasure);
     gfits_set_bintable_column (&theader, &ftable, "EXPTIME",  	dt,        catalog->Nmeasure);
     gfits_set_bintable_column (&theader, &ftable, "TIME",     	t,         catalog->Nmeasure);
@@ -419,4 +431,6 @@
     free (Xccd    );
     free (Yccd    );
+    free (Xfix    );
+    free (Yfix    );
     free (dt      );
     free (t       );
Index: branches/eam_branches/ipp-20121219/Ohana/src/relastro/src/ConfigInit.c
===================================================================
--- branches/eam_branches/ipp-20121219/Ohana/src/relastro/src/ConfigInit.c	(revision 34896)
+++ branches/eam_branches/ipp-20121219/Ohana/src/relastro/src/ConfigInit.c	(revision 34898)
@@ -35,4 +35,8 @@
   GetConfig (config, "RELASTRO_DPOS_MAX",      "%lf", 0, &DPOS_MAX);
   GetConfig (config, "ADDSTAR_RADIUS",         "%lf", 0, &ADDSTAR_RADIUS);
+
+  if (!ScanConfig (config, "USE_FIXED_PIXCOORDS", "%d", 0, &USE_FIXED_PIXCOORDS)) {
+    USE_FIXED_PIXCOORDS = FALSE;
+  }
 
   // force CATDIR to be absolute (so parallel mode will work)
Index: branches/eam_branches/ipp-20121219/Ohana/src/relastro/src/ImageOps.c
===================================================================
--- branches/eam_branches/ipp-20121219/Ohana/src/relastro/src/ImageOps.c	(revision 34896)
+++ branches/eam_branches/ipp-20121219/Ohana/src/relastro/src/ImageOps.c	(revision 34898)
@@ -446,6 +446,11 @@
     Measure *measure = &catalog[c].measure[m];
 
-    X = measure[0].Xccd;
-    Y = measure[0].Yccd;
+    if (USE_FIXED_PIXCOORDS) {
+      X = isfinite(measure[0].Xfix) ? measure[0].Xfix : measure[0].Xccd;
+      Y = isfinite(measure[0].Yfix) ? measure[0].Yfix : measure[0].Yccd;
+    } else {
+      X = measure[0].Xccd;
+      Y = measure[0].Yccd;
+    }
     n = measure[0].averef;
 
@@ -570,6 +575,11 @@
     Measure *measure = &catalog[c].measure[m];
 
-    X = measure[0].Xccd;
-    Y = measure[0].Yccd;
+    if (USE_FIXED_PIXCOORDS) {
+      X = isfinite(measure[0].Xfix) ? measure[0].Xfix : measure[0].Xccd;
+      Y = isfinite(measure[0].Yfix) ? measure[0].Yfix : measure[0].Yccd;
+    } else {
+      X = measure[0].Xccd;
+      Y = measure[0].Yccd;
+    }
     n = measure[0].averef;
 
@@ -635,6 +645,11 @@
 
     /* apply the current image transformation or use the current value of R+dR, D+dD? */
-    raw[i].X = measure[0].Xccd;
-    raw[i].Y = measure[0].Yccd;
+    if (USE_FIXED_PIXCOORDS) {
+      raw[i].X = isfinite(measure[0].Xfix) ? measure[0].Xfix : measure[0].Xccd;
+      raw[i].Y = isfinite(measure[0].Yfix) ? measure[0].Yfix : measure[0].Yccd;
+    } else {
+      raw[i].X = measure[0].Xccd;
+      raw[i].Y = measure[0].Yccd;
+    }
 
     raw[i].Mag  = measure[0].M;
Index: branches/eam_branches/ipp-20121219/Ohana/src/relastro/src/StarMaps.c
===================================================================
--- branches/eam_branches/ipp-20121219/Ohana/src/relastro/src/StarMaps.c	(revision 34896)
+++ branches/eam_branches/ipp-20121219/Ohana/src/relastro/src/StarMaps.c	(revision 34898)
@@ -73,4 +73,6 @@
     if (N < 0) continue;
 
+    // NOTE: we use Xccd,Yccd even if USE_FIXED_PIXCOORDS is true: the difference is too
+    // small to be relevant for this analysis
     xbin = measure[0].Xccd / starmap[N].Nx;
     ybin = measure[0].Yccd / starmap[N].Ny;
