Index: /branches/dvo-mods-2007-02/Ohana/src/libdvo/Makefile
===================================================================
--- /branches/dvo-mods-2007-02/Ohana/src/libdvo/Makefile	(revision 12274)
+++ /branches/dvo-mods-2007-02/Ohana/src/libdvo/Makefile	(revision 12275)
@@ -48,4 +48,5 @@
 $(SRC)/dvo_convert_elixir.$(ARCH).o    \
 $(SRC)/dvo_convert_loneos.$(ARCH).o    \
+$(SRC)/dvo_convert_panstarrs_DEV_0.$(ARCH).o \
 $(SRC)/skyregion_io.$(ARCH).o    \
 $(SRC)/skyregion_gsc.$(ARCH).o    \
Index: /branches/dvo-mods-2007-02/Ohana/src/libdvo/doc/dvo-structures.txt
===================================================================
--- /branches/dvo-mods-2007-02/Ohana/src/libdvo/doc/dvo-structures.txt	(revision 12274)
+++ /branches/dvo-mods-2007-02/Ohana/src/libdvo/doc/dvo-structures.txt	(revision 12275)
@@ -86,9 +86,11 @@
 - CFHT Elixir databases: cmp files, ELIXIR format
 - Brandon's Taurus db: incorrect 'PANSTARRS' format, should be called
-  'PSTEST1'
+  'PSTEST1'.  drop support for this eventually? have brandon migrate to
+  the new panstarrs formats?
 
 I am going to use the following naming convention for future db table
 updates:
 
+- PANSTARRS.DEV.0, PANSTARRS.DEV.1, etc
 - PANSTARRS.PS1.0, PANSTARRS.PS1.1, etc
 - PANSTARRS.PS4.0, PANSTARRS.PS4.1, etc
Index: /branches/dvo-mods-2007-02/Ohana/src/libdvo/doc/notes.txt
===================================================================
--- /branches/dvo-mods-2007-02/Ohana/src/libdvo/doc/notes.txt	(revision 12275)
+++ /branches/dvo-mods-2007-02/Ohana/src/libdvo/doc/notes.txt	(revision 12275)
@@ -0,0 +1,55 @@
+
+Adding a new dvo catalog format.  Assume the new format name is 'foo'.
+
+1) create the autocode definition files for average, measure, secfilt, image
+   these files must be a subset of the internal versions of these same
+   tables.  if you intend to add fields which don't exist in the
+   internal tables, you must update the internal tables as well.  the
+   naming convention is: average-foo.d, etc.
+
+2) add the new definition files to libautocode/Makefile.Targets (both
+   .o and .h lists).
+
+3) set the STRUCT and EXTNAME for these definitions files to have a
+   unique value. the naming convention for EXTNAME is DVO_AVERAGE_FOO
+   and for STRUCT is AverageFoo (add version info with underscores and
+   uppercase, eg: AveragePanstarrs_DEV_0, AveragePanstarrs_PS1_2).
+
+4) create a DVOTableFormat entry for the new format
+   (libdvo/include/dvo.h).  the naming convetion is DVO_FORMAT_FOO.
+
+5) add an entry for the new format in dvo_catalog_catformat
+ (libdvo/src/dvo_catalog.c).  The name should be "FOO".
+
+6) add entry for structure size in dvo_catalog_load_raw
+   (libdvo/src/dvo_catalog_raw.c), since this is not available from
+   the header.
+
+7) add entries in ReadRawAverage, WriteRawAverage, ReadRawMeasure,
+   WriteRawMeasure, ReadRawSecFilt, WriteRawSecFilt.  Make sure to use
+   the new STRUCT names. the conversion function gfit_convert_Foo will
+   be automatically generated.
+
+8) add entry in WriteRawAverage, making sure to use the new STRUCT
+   name. the conversion function gfit_convert_Foo will be
+   automatically generated.  
+
+9) create a new conversion file dvo_convert_foo.c and define the
+   internal to Foo conversions.
+
+* Note some esoteric format issues:  
+
+  - LONEOS and ELIXIR lack chip coordinates, and must apply an
+    on-the-fly conversion, implemented in dvo_catalog_chipcoords. 
+
+  - LONEOS and ELIXIR use the old primary/secondary photcode concept,
+    and must have one photcode dataset extracted from the average
+    table on read and resupplied on write.  this happens in
+    dvo_catalog_save_mef, dvo_catalog_save_raw,
+    dvo_catalog_save_split, dvo_catalog_update_split
+
+  - LONEOS and ELIXIR have old versions where the header does not
+    specify the type explicitly.  the functions dvo_catalog_load_raw
+    and dvo_image_load_raw identify these types based on special
+    keywords.
+
Index: /branches/dvo-mods-2007-02/Ohana/src/libdvo/include/dvo.h
===================================================================
--- /branches/dvo-mods-2007-02/Ohana/src/libdvo/include/dvo.h	(revision 12274)
+++ /branches/dvo-mods-2007-02/Ohana/src/libdvo/include/dvo.h	(revision 12275)
@@ -18,5 +18,12 @@
 
 /* DVO table formats */
-enum {DVO_FORMAT_UNDEF, DVO_FORMAT_INTERNAL, DVO_FORMAT_ELIXIR, DVO_FORMAT_LONEOS, DVO_FORMAT_PANSTARRS, DVO_FORMAT_PMTEST} DVOTableFormat;
+enum {DVO_FORMAT_UNDEF, 
+      DVO_FORMAT_INTERNAL, 
+      DVO_FORMAT_ELIXIR, 
+      DVO_FORMAT_LONEOS, 
+      DVO_FORMAT_PANSTARRS, 
+      DVO_FORMAT_PMTEST, 
+      DVO_FORMAT_PANSTARRS_DEV_0
+} DVOTableFormat;
 
 /* image data modes in RegImage */
@@ -339,37 +346,43 @@
 int ImageToVtable (VTable *vtable, Header *theader, int format);
 
-Image 		 *ImageElixirToInternal (ImageElixir *in, int Nvalues);
-Image 		 *ImageLoneosToInternal (ImageLoneos *in, int Nvalues);
-Image 		 *ImagePanstarrsToInternal (ImagePanstarrs *in, int Nvalues);
-
-ImageElixir 	 *ImageInternalToElixir (Image *in, int Nvalues);
-ImageLoneos 	 *ImageInternalToLoneos (Image *in, int Nvalues);
-ImagePanstarrs   *ImageInternalToPanstarrs (Image *in, int Nvalues);
-
-Average          *AverageLoneosToInternal (AverageLoneos *in, int Nvalues, SecFilt **primary);
-Average 	 *AverageElixirToInternal (AverageElixir *in, int Nvalues, SecFilt **primary);
-Average 	 *AveragePMtestToInternal (AveragePMtest *in, int Nvalues);
-Average 	 *AveragePanstarrsToInternal (AveragePanstarrs *in, int Nvalues);
-
-AverageLoneos 	 *AverageInternalToLoneos (Average *in, int Nvalues, SecFilt *primary);
-AverageElixir 	 *AverageInternalToElixir (Average *in, int Nvalues, SecFilt *primary);
-AveragePMtest    *AverageInternalToPMtest (Average *in, int Nvalues);
-AveragePanstarrs *AverageInternalToPanstarrs (Average *in, int Nvalues);
-
-Measure          *MeasureLoneosToInternal (MeasureLoneos *in, int Nvalues);
-Measure 	 *MeasureElixirToInternal (MeasureElixir *in, int Nvalues);
-Measure 	 *MeasurePanstarrsToInternal (MeasurePanstarrs *in, int Nvalues);
-
-MeasureLoneos 	 *MeasureInternalToLoneos (Measure *in, int Nvalues);
-MeasureElixir 	 *MeasureInternalToElixir (Measure *in, int Nvalues);
-MeasurePanstarrs *MeasureInternalToPanstarrs (Measure *in, int Nvalues);
-
-SecFilt 	 *SecFiltLoneosToInternal (SecFiltLoneos *in, int Nvalues);
-SecFilt 	 *SecFiltElixirToInternal (SecFiltElixir *in, int Nvalues);
-SecFilt 	 *SecFiltPanstarrsToInternal (SecFiltPanstarrs *in, int Nvalues);
-
-SecFiltLoneos 	 *SecFiltInternalToLoneos (SecFilt *in, int Nvalues);
-SecFiltElixir 	 *SecFiltInternalToElixir (SecFilt *in, int Nvalues);
-SecFiltPanstarrs *SecFiltInternalToPanstarrs (SecFilt *in, int Nvalues);
+Image 		       *ImageElixirToInternal (ImageElixir *in, int Nvalues);
+Image 		       *ImageLoneosToInternal (ImageLoneos *in, int Nvalues);
+Image 		       *ImagePanstarrsToInternal (ImagePanstarrs *in, int Nvalues);
+Image 		       *ImagePanstarrs_DEV_0_ToInternal (ImagePanstarrs_DEV_0 *in, int Nvalues);
+
+ImageElixir 	       *ImageInternalToElixir (Image *in, int Nvalues);
+ImageLoneos 	       *ImageInternalToLoneos (Image *in, int Nvalues);
+ImagePanstarrs         *ImageInternalToPanstarrs (Image *in, int Nvalues);
+ImagePanstarrs_DEV_0   *ImageInternalToPanstarrs_DEV_0 (Image *in, int Nvalues);
+
+Average                *AverageLoneosToInternal (AverageLoneos *in, int Nvalues, SecFilt **primary);
+Average 	       *AverageElixirToInternal (AverageElixir *in, int Nvalues, SecFilt **primary);
+Average 	       *AveragePanstarrsToInternal (AveragePanstarrs *in, int Nvalues);
+Average 	       *AveragePanstarrs_DEV_0_ToInternal (AveragePanstarrs_DEV_0 *in, int Nvalues);
+
+AverageLoneos 	       *AverageInternalToLoneos (Average *in, int Nvalues, SecFilt *primary);
+AverageElixir 	       *AverageInternalToElixir (Average *in, int Nvalues, SecFilt *primary);
+AveragePanstarrs       *AverageInternalToPanstarrs (Average *in, int Nvalues);
+AveragePanstarrs_DEV_0 *AverageInternalToPanstarrs_DEV_0 (Average *in, int Nvalues);
+
+Measure                *MeasureLoneosToInternal (MeasureLoneos *in, int Nvalues);
+Measure 	       *MeasureElixirToInternal (MeasureElixir *in, int Nvalues);
+Measure 	       *MeasurePanstarrsToInternal (MeasurePanstarrs *in, int Nvalues);
+Measure 	       *MeasurePanstarrs_DEV_0_ToInternal (MeasurePanstarrs_DEV_0 *in, int Nvalues);
+
+MeasureLoneos 	       *MeasureInternalToLoneos (Measure *in, int Nvalues);
+MeasureElixir 	       *MeasureInternalToElixir (Measure *in, int Nvalues);
+MeasurePanstarrs       *MeasureInternalToPanstarrs (Measure *in, int Nvalues);
+MeasurePanstarrs_DEV_0 *MeasureInternalToPanstarrs_DEV_0 (Measure *in, int Nvalues);
+
+SecFilt 	       *SecFiltLoneosToInternal (SecFiltLoneos *in, int Nvalues);
+SecFilt 	       *SecFiltElixirToInternal (SecFiltElixir *in, int Nvalues);
+SecFilt 	       *SecFiltPanstarrsToInternal (SecFiltPanstarrs *in, int Nvalues);
+SecFilt 	       *SecFiltPanstarrs_DEV_0_ToInternal (SecFiltPanstarrs_DEV_0 *in, int Nvalues);
+
+SecFiltLoneos 	       *SecFiltInternalToLoneos (SecFilt *in, int Nvalues);
+SecFiltElixir 	       *SecFiltInternalToElixir (SecFilt *in, int Nvalues);
+SecFiltPanstarrs       *SecFiltInternalToPanstarrs (SecFilt *in, int Nvalues);
+SecFiltPanstarrs_DEV_0 *SecFiltInternalToPanstarrs_DEV_0 (SecFilt *in, int Nvalues);
 
 /*** DVO image db I/O Functions ***/
Index: /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog.c
===================================================================
--- /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog.c	(revision 12274)
+++ /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog.c	(revision 12275)
@@ -50,4 +50,5 @@
   if (!strcasecmp (catformat, "PANSTARRS")) return (DVO_FORMAT_PANSTARRS);
   if (!strcasecmp (catformat, "PMTEST"))    return (DVO_FORMAT_PMTEST);
+  if (!strcasecmp (catformat, "PANSTARRS_DEV_0")) return (DVO_FORMAT_PANSTARRS_DEV_0);
   return (DVO_FORMAT_UNDEF);
 }
@@ -386,5 +387,5 @@
 /*
   mode   : items to read (LOAD_AVES | LOAD_MEAS | LOAD_MISS | LOAD_SECF)
-  format : what structure on disk (INTERNAL, ELIXIR, LONEOS, PANSTARRS)
+  format : what table structure on disk (INTERNAL, LONEOS, etc, )
   style  : raw, mef, split, mysql
 */
Index: /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog_chipcoords.c
===================================================================
--- /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog_chipcoords.c	(revision 12274)
+++ /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog_chipcoords.c	(revision 12275)
@@ -45,6 +45,6 @@
   Measure *measure;
 
-  if (catalog[0].catformat == DVO_FORMAT_LONEOS) goto do_convert;
-  if (catalog[0].catformat == DVO_FORMAT_ELIXIR) goto do_convert;
+  if (catalog[0].catformat == DVO_FORMAT_LONEOS) goto do_convert;  // special conversion for LONEOS
+  if (catalog[0].catformat == DVO_FORMAT_ELIXIR) goto do_convert;  // special conversion for ELIXIR
   return TRUE;
 
Index: /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog_mef.c
===================================================================
--- /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog_mef.c	(revision 12274)
+++ /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog_mef.c	(revision 12275)
@@ -152,5 +152,5 @@
 }
 
-/* XXX need to decompose the primary and secfilt entries for ELIXIR and LONEOS */
+/* XXX need to decompose the primary and secfilt entries for Elixir and Loneos */
 /* save_catalog_mef writes a complete new file from scratch */
 int dvo_catalog_save_mef (Catalog *catalog, char VERBOSE) {
@@ -198,5 +198,6 @@
 
   /* for the appropriate types, pull out the first secfilt and pass to AverageToFtable as primary */
-  if ((catalog[0].catformat == DVO_FORMAT_ELIXIR) || (catalog[0].catformat == DVO_FORMAT_LONEOS)) {
+  if ((catalog[0].catformat == DVO_FORMAT_ELIXIR) || // special case for ELIXIR 
+      (catalog[0].catformat == DVO_FORMAT_LONEOS)) { // special case for LONEOS
     Nallfilt = catalog[0].Nsecfilt;
     Nsecfilt = catalog[0].Nsecfilt - 1;
Index: /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog_raw.c
===================================================================
--- /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog_raw.c	(revision 12274)
+++ /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog_raw.c	(revision 12275)
@@ -29,23 +29,19 @@
   catalog[0].catformat = DVO_FORMAT_UNDEF;
   if (gfits_scan (&catalog[0].header, "FORMAT",  "%s", 1, format)) {
-    if (!strcmp (format, "INTERNAL")) catalog[0].catformat = DVO_FORMAT_INTERNAL;
-    if (!strcmp (format, "LONEOS")) catalog[0].catformat = DVO_FORMAT_LONEOS;
-    if (!strcmp (format, "ELIXIR")) catalog[0].catformat = DVO_FORMAT_ELIXIR;
-    // if (!strcmp (format, "PANSTARRS")) catalog[0].catformat = DVO_FORMAT_PANSTARRS;
-    // if (!strcmp (format, "PMTEST")) catalog[0].catformat = DVO_FORMAT_PMTEST;
+    catalog[0].catformat = dvo_catalog_catformat (format);
     if (catalog[0].catformat != DVO_FORMAT_UNDEF) goto got_format;
   }
   /* special cases: old versions of the DB tables which were poorly identified */
   if (gfits_scan (&catalog[0].header, "NEWMEAS",  "%t", 1, &NewMeasure)) {
-    catalog[0].catformat = DVO_FORMAT_ELIXIR;
+    catalog[0].catformat = DVO_FORMAT_ELIXIR; // special case for ELIXIR
     goto got_format;
   }
   if (gfits_scan (&catalog[0].header, "TELESCOP",  "%s", 1, telescope)) {
     if (!strncmp (telescope, "LONEOS", strlen("LONEOS"))) {
-      catalog[0].catformat = DVO_FORMAT_LONEOS;
+      catalog[0].catformat = DVO_FORMAT_LONEOS; // special case for LONEOS
       goto got_format;
     }
     if (!strncmp (telescope, "1.3m McGraw-Hill", strlen("1.3m McGraw-Hill"))) {
-      catalog[0].catformat = DVO_FORMAT_ELIXIR;
+      catalog[0].catformat = DVO_FORMAT_ELIXIR; // special case for ELIXIR
       goto got_format;
     }
@@ -60,15 +56,20 @@
       AverageSize = sizeof(Average);
       MeasureSize = sizeof(Measure);
-      SecFiltSize = sizeof (SecFilt);
+      SecFiltSize = sizeof(SecFilt);
       break;
     case DVO_FORMAT_LONEOS:
       AverageSize = sizeof(AverageLoneos);
       MeasureSize = sizeof(MeasureLoneos);
-      SecFiltSize = sizeof (SecFiltLoneos);
+      SecFiltSize = sizeof(SecFiltLoneos);
       break;
     case DVO_FORMAT_ELIXIR:
       AverageSize = sizeof(AverageElixir);
       MeasureSize = sizeof(MeasureElixir);
-      SecFiltSize = sizeof (SecFiltElixir);
+      SecFiltSize = sizeof(SecFiltElixir);
+      break;
+    case DVO_FORMAT_PANSTARRS_DEV_0:
+      AverageSize = sizeof(AveragePanstarrs_DEV_0);
+      MeasureSize = sizeof(MeasurePanstarrs_DEV_0);
+      SecFiltSize = sizeof(SecFiltPanstarrs_DEV_0);
       break;
 # if 0
@@ -76,10 +77,10 @@
       AverageSize = sizeof(AveragePanstarrs);
       MeasureSize = sizeof(MeasurePanstarrs);
-      SecFiltSize = sizeof (SecFiltPanstarrs);
+      SecFiltSize = sizeof(SecFiltPanstarrs);
       break;
     case DVO_FORMAT_PMTEST:
       AverageSize = sizeof(AveragePMtest);
       MeasureSize = sizeof(MeasurePanstarrs);
-      SecFiltSize = sizeof (SecFiltPanstarrs);
+      SecFiltSize = sizeof(SecFiltPanstarrs);
       break;
 # endif
@@ -239,4 +240,5 @@
   if (catalog[0].catformat == DVO_FORMAT_LONEOS)    gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "LONEOS");
   if (catalog[0].catformat == DVO_FORMAT_ELIXIR)    gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "ELIXIR");
+  if (catalog[0].catformat == DVO_FORMAT_PANSTARRS_DEV_0) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PANSTARRS_DEV_0");
   // if (catalog[0].catformat == DVO_FORMAT_PANSTARRS) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PANSTARRS");
   // if (catalog[0].catformat == DVO_FORMAT_PMTEST)    gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PMTEST");
@@ -255,5 +257,6 @@
 
   /* for the appropriate types, pull out the first secfilt and pass to WriteRawAverage as primary */
-  if ((catalog[0].catformat == DVO_FORMAT_ELIXIR) || (catalog[0].catformat == DVO_FORMAT_LONEOS)) {
+  if ((catalog[0].catformat == DVO_FORMAT_ELIXIR) || // special case for ELIXIR
+      (catalog[0].catformat == DVO_FORMAT_LONEOS)) { // special case for LONEOS
     Nallfilt = catalog[0].Nsecfilt;
     Nsecfilt = catalog[0].Nsecfilt - 1;
@@ -310,15 +313,11 @@
   int nitems;
   Average *average;
-  AverageElixir *tmpAverageElixir;
-  AverageLoneos *tmpAverageLoneos;
-  // AveragePanstarrs *tmpAveragePanstarrs;
-  // AveragePMtest *tmpAveragePMtest;
-
-  /* in the ELIXIR and LONEOS cases, we are supplied with an average magnitude in Average
+
+  /* in the Elixir and Loneos cases, we are supplied with an average magnitude in Average
      in these cases, save these values in primary; otherwise set primary to NULL */
   *primary = NULL;
 
   switch (format) {
-    case DVO_FORMAT_INTERNAL:
+    case DVO_FORMAT_INTERNAL: {
       ALLOCATE (average, Average, MAX (Naverage, 1));
       nitems = fread (average, sizeof(Average), Naverage, f);
@@ -328,50 +327,66 @@
       }
       gfits_convert_Average (average, sizeof(Average), Naverage);
-      break;
-    case DVO_FORMAT_ELIXIR:
-      ALLOCATE (tmpAverageElixir, AverageElixir, MAX (Naverage, 1));
-      nitems = fread (tmpAverageElixir, sizeof(AverageElixir), Naverage, f);
+      break; }
+    case DVO_FORMAT_ELIXIR: {
+      AverageElixir *tmpAverage;
+      ALLOCATE (tmpAverage, AverageElixir, MAX (Naverage, 1));
+      nitems = fread (tmpAverage, sizeof(AverageElixir), Naverage, f);
       if (nitems != Naverage) {
 	fprintf (stderr, "failed to read averages (%d vs %d)\n", nitems, Naverage);
 	return (NULL);
       }
-      gfits_convert_AverageElixir (tmpAverageElixir, sizeof(AverageElixir), Naverage);
-      average = AverageElixirToInternal (tmpAverageElixir, Naverage, primary);
-      free (tmpAverageElixir);
-      break;
-    case DVO_FORMAT_LONEOS:
-      ALLOCATE (tmpAverageLoneos, AverageLoneos, MAX (Naverage, 1));
-      nitems = fread (tmpAverageLoneos, sizeof(AverageLoneos), Naverage, f);
+      gfits_convert_AverageElixir (tmpAverage, sizeof(AverageElixir), Naverage);
+      average = AverageElixirToInternal (tmpAverage, Naverage, primary);
+      free (tmpAverage);
+      break; }
+    case DVO_FORMAT_LONEOS: {
+      AverageLoneos *tmpAverage;
+      ALLOCATE (tmpAverage, AverageLoneos, MAX (Naverage, 1));
+      nitems = fread (tmpAverage, sizeof(AverageLoneos), Naverage, f);
       if (nitems != Naverage) {
 	fprintf (stderr, "failed to read averages (%d vs %d)\n", nitems, Naverage);
 	return (NULL);
       }
-      gfits_convert_AverageLoneos (tmpAverageLoneos, sizeof(AverageLoneos), Naverage);
-      average = AverageLoneosToInternal (tmpAverageLoneos, Naverage, primary);
-      free (tmpAverageLoneos);
-      break;
+      gfits_convert_AverageLoneos (tmpAverage, sizeof(AverageLoneos), Naverage);
+      average = AverageLoneosToInternal (tmpAverage, Naverage, primary);
+      free (tmpAverage);
+      break; }
+    case DVO_FORMAT_PANSTARRS_DEV_0: {
+      AveragePanstarrs_DEV_0 *tmpAverage;
+      ALLOCATE (tmpAverage, AveragePanstarrs_DEV_0, MAX (Naverage, 1));
+      nitems = fread (tmpAverage, sizeof(AveragePanstarrs_DEV_0), Naverage, f);
+      if (nitems != Naverage) {
+	fprintf (stderr, "failed to read averages (%d vs %d)\n", nitems, Naverage);
+	return (NULL);
+      }
+      gfits_convert_AveragePanstarrs_DEV_0 (tmpAverage, sizeof(AveragePanstarrs_DEV_0), Naverage);
+      average = AveragePanstarrs_DEV_0_ToInternal (tmpAverage, Naverage);
+      free (tmpAverage);
+      break; }
 # if 0
-    case DVO_FORMAT_PANSTARRS:
-      ALLOCATE (tmpAveragePanstarrs, AveragePanstarrs, MAX (Naverage, 1));
-      nitems = fread (tmpAveragePanstarrs, sizeof(AveragePanstarrs), Naverage, f);
+    case DVO_FORMAT_PANSTARRS: {
+      AveragePanstarrs *tmpAverage;
+      ALLOCATE (tmpAverage, AveragePanstarrs, MAX (Naverage, 1));
+      nitems = fread (tmpAverage, sizeof(AveragePanstarrs), Naverage, f);
       if (nitems != Naverage) {
 	fprintf (stderr, "failed to read averages (%d vs %d)\n", nitems, Naverage);
 	return (NULL);
       }
-      gfits_convert_AveragePanstarrs (tmpAveragePanstarrs, sizeof(AveragePanstarrs), Naverage);
-      average = AveragePanstarrsToInternal (tmpAveragePanstarrs, Naverage);
-      free (tmpAveragePanstarrs);
-      break;
-    case DVO_FORMAT_PMTEST:
-      ALLOCATE (tmpAveragePMtest, AveragePMtest, MAX (Naverage, 1));
-      nitems = fread (tmpAveragePMtest, sizeof(AveragePMtest), Naverage, f);
+      gfits_convert_AveragePanstarrs (tmpAverage, sizeof(AveragePanstarrs), Naverage);
+      average = AveragePanstarrsToInternal (tmpAverage, Naverage);
+      free (tmpAverage);
+      break; }
+    case DVO_FORMAT_PMTEST: {
+      AveragePMtest *tmpAverage;
+      ALLOCATE (tmpAverage, AveragePMtest, MAX (Naverage, 1));
+      nitems = fread (tmpAverage, sizeof(AveragePMtest), Naverage, f);
       if (nitems != Naverage) {
 	fprintf (stderr, "failed to read averages (%d vs %d)\n", nitems, Naverage);
 	return (NULL);
       }
-      gfits_convert_AveragePMtest (tmpAveragePMtest, sizeof(AveragePMtest), Naverage);
-      average = AveragePMtestToInternal (tmpAveragePMtest, Naverage);
-      free (tmpAveragePMtest);
-      break;
+      gfits_convert_AveragePMtest (tmpAverage, sizeof(AveragePMtest), Naverage);
+      average = AveragePMtestToInternal (tmpAverage, Naverage);
+      free (tmpAverage);
+      break; }
 # endif
     default:
@@ -387,11 +402,7 @@
 
   int nitems;
-  AverageElixir *tmpAverageElixir;
-  AverageLoneos *tmpAverageLoneos;
-  // AveragePanstarrs *tmpAveragePanstarrs;
-  // AveragePMtest *tmpAveragePMtest;
 
   switch (format) {
-    case DVO_FORMAT_INTERNAL:
+    case DVO_FORMAT_INTERNAL: {
       gfits_convert_Average (average, sizeof(Average), Naverage);
       nitems = fwrite (average, sizeof(Average), Naverage, f);
@@ -400,46 +411,61 @@
 	return (FALSE);
       }
-      break;
-    case DVO_FORMAT_ELIXIR:
-      tmpAverageElixir = AverageInternalToElixir (average, Naverage, primary);
-      gfits_convert_AverageElixir (tmpAverageElixir, sizeof(AverageElixir), Naverage);
-      nitems = fwrite (tmpAverageElixir, sizeof(AverageElixir), Naverage, f);
-      free (tmpAverageElixir);
+      break; }
+    case DVO_FORMAT_ELIXIR: {
+      AverageElixir *tmpAverage;
+      tmpAverage = AverageInternalToElixir (average, Naverage, primary);
+      gfits_convert_AverageElixir (tmpAverage, sizeof(AverageElixir), Naverage);
+      nitems = fwrite (tmpAverage, sizeof(AverageElixir), Naverage, f);
+      free (tmpAverage);
       if (nitems != Naverage) {
 	fprintf (stderr, "failed to write averages (%d vs %d)\n", nitems, Naverage);
 	return (FALSE);
       }
-      break;
-    case DVO_FORMAT_LONEOS:
-      tmpAverageLoneos = AverageInternalToLoneos (average, Naverage, primary);
-      gfits_convert_AverageLoneos (tmpAverageLoneos, sizeof(AverageLoneos), Naverage);
-      nitems = fwrite (tmpAverageLoneos, sizeof(AverageLoneos), Naverage, f);
-      free (tmpAverageLoneos);
+      break; }
+    case DVO_FORMAT_LONEOS: {
+      AverageLoneos *tmpAverage;
+      tmpAverage = AverageInternalToLoneos (average, Naverage, primary);
+      gfits_convert_AverageLoneos (tmpAverage, sizeof(AverageLoneos), Naverage);
+      nitems = fwrite (tmpAverage, sizeof(AverageLoneos), Naverage, f);
+      free (tmpAverage);
       if (nitems != Naverage) {
 	fprintf (stderr, "failed to write averages (%d vs %d)\n", nitems, Naverage);
 	return (FALSE);
       }
-      break;
+      break; }
+    case DVO_FORMAT_PANSTARRS_DEV_0: {
+      AveragePanstarrs_DEV_0 *tmpAverage;
+      tmpAverage = AverageInternalToPanstarrs_DEV_0 (average, Naverage);
+      gfits_convert_AveragePanstarrs_DEV_0 (tmpAverage, sizeof(AveragePanstarrs_DEV_0), Naverage);
+      nitems = fwrite (tmpAverage, sizeof(AveragePanstarrs_DEV_0), Naverage, f);
+      free (tmpAverage);
+      if (nitems != Naverage) {
+	fprintf (stderr, "failed to write averages (%d vs %d)\n", nitems, Naverage);
+	return (FALSE);
+      }
+      break; }
 # if 0
-    case DVO_FORMAT_PANSTARRS:
-      tmpAveragePanstarrs = AverageInternalToPanstarrs (average, Naverage);
-      gfits_convert_AveragePanstarrs (tmpAveragePanstarrs, sizeof(AveragePanstarrs), Naverage);
-      nitems = fwrite (tmpAveragePanstarrs, sizeof(AveragePanstarrs), Naverage, f);
-      free (tmpAveragePanstarrs);
+    case DVO_FORMAT_PANSTARRS: {
+      AveragePanstarrs *tmpAverage;
+      tmpAverage = AverageInternalToPanstarrs (average, Naverage);
+      gfits_convert_AveragePanstarrs (tmpAverage, sizeof(AveragePanstarrs), Naverage);
+      nitems = fwrite (tmpAverage, sizeof(AveragePanstarrs), Naverage, f);
+      free (tmpAverage);
       if (nitems != Naverage) {
 	fprintf (stderr, "failed to write averages (%d vs %d)\n", nitems, Naverage);
 	return (FALSE);
       }
-      break;
-    case DVO_FORMAT_PMTEST:
-      tmpAveragePMtest = AverageInternalToPMtest (average, Naverage);
-      gfits_convert_AveragePMtest (tmpAveragePMtest, sizeof(AveragePMtest), Naverage);
-      nitems = fwrite (tmpAveragePMtest, sizeof(AveragePMtest), Naverage, f);
-      free (tmpAveragePMtest);
+      break; }
+    case DVO_FORMAT_PMTEST: {
+      AveragePMtest *tmpAverage;
+      tmpAverage = AverageInternalToPMtest (average, Naverage);
+      gfits_convert_AveragePMtest (tmpAverage, sizeof(AveragePMtest), Naverage);
+      nitems = fwrite (tmpAverage, sizeof(AveragePMtest), Naverage, f);
+      free (tmpAverage);
       if (nitems != Naverage) {
 	fprintf (stderr, "failed to write averages (%d vs %d)\n", nitems, Naverage);
 	return (FALSE);
       }
-      break;
+      break; }
 # endif
     default:
@@ -456,10 +482,7 @@
   int nitems;
   Measure *measure;
-  MeasureElixir *tmpMeasureElixir;
-  MeasureLoneos *tmpMeasureLoneos;
-  // MeasurePanstarrs *tmpMeasurePanstarrs;
 
   switch (format) {
-    case DVO_FORMAT_INTERNAL:
+    case DVO_FORMAT_INTERNAL: {
       ALLOCATE (measure, Measure, MAX (Nmeasure, 1));
       nitems = fread (measure, sizeof(Measure), Nmeasure, f);
@@ -469,40 +492,54 @@
       }
       gfits_convert_Measure (measure, sizeof(Measure), Nmeasure);
-      break;
-    case DVO_FORMAT_ELIXIR:
-      ALLOCATE (tmpMeasureElixir, MeasureElixir, MAX (Nmeasure, 1));
-      nitems = fread (tmpMeasureElixir, sizeof(MeasureElixir), Nmeasure, f);
+      break; }
+    case DVO_FORMAT_ELIXIR: {
+      MeasureElixir *tmpMeasure;
+      ALLOCATE (tmpMeasure, MeasureElixir, MAX (Nmeasure, 1));
+      nitems = fread (tmpMeasure, sizeof(MeasureElixir), Nmeasure, f);
       if (nitems != Nmeasure) {
 	fprintf (stderr, "failed to read measures (%d vs %d)\n", nitems, Nmeasure);
 	return (NULL);
       }
-      gfits_convert_MeasureElixir (tmpMeasureElixir, sizeof(MeasureElixir), Nmeasure);
-      measure = MeasureElixirToInternal (tmpMeasureElixir, Nmeasure);
-      free (tmpMeasureElixir);
-      break;
-    case DVO_FORMAT_LONEOS:
-      ALLOCATE (tmpMeasureLoneos, MeasureLoneos, MAX (Nmeasure, 1));
-      nitems = fread (tmpMeasureLoneos, sizeof(MeasureLoneos), Nmeasure, f);
+      gfits_convert_MeasureElixir (tmpMeasure, sizeof(MeasureElixir), Nmeasure);
+      measure = MeasureElixirToInternal (tmpMeasure, Nmeasure);
+      free (tmpMeasure);
+      break; }
+    case DVO_FORMAT_LONEOS: {
+      MeasureLoneos *tmpMeasure;
+      ALLOCATE (tmpMeasure, MeasureLoneos, MAX (Nmeasure, 1));
+      nitems = fread (tmpMeasure, sizeof(MeasureLoneos), Nmeasure, f);
       if (nitems != Nmeasure) {
 	fprintf (stderr, "failed to read measures (%d vs %d)\n", nitems, Nmeasure);
 	return (NULL);
       }
-      gfits_convert_MeasureLoneos (tmpMeasureLoneos, sizeof(MeasureLoneos), Nmeasure);
-      measure = MeasureLoneosToInternal (tmpMeasureLoneos, Nmeasure);
-      free (tmpMeasureLoneos);
-      break;
+      gfits_convert_MeasureLoneos (tmpMeasure, sizeof(MeasureLoneos), Nmeasure);
+      measure = MeasureLoneosToInternal (tmpMeasure, Nmeasure);
+      free (tmpMeasure);
+      break; }
+    case DVO_FORMAT_PANSTARRS_DEV_0: {
+      MeasurePanstarrs_DEV_0 *tmpMeasure;
+      ALLOCATE (tmpMeasure, MeasurePanstarrs_DEV_0, MAX (Nmeasure, 1));
+      nitems = fread (tmpMeasure, sizeof(MeasurePanstarrs_DEV_0), Nmeasure, f);
+      if (nitems != Nmeasure) {
+	fprintf (stderr, "failed to read measures (%d vs %d)\n", nitems, Nmeasure);
+	return (NULL);
+      }
+      gfits_convert_MeasurePanstarrs_DEV_0 (tmpMeasure, sizeof(MeasurePanstarrs_DEV_0), Nmeasure);
+      measure = MeasurePanstarrs_DEV_0_ToInternal (tmpMeasure, Nmeasure);
+      free (tmpMeasure);
+      break; }
 # if 0
-    case DVO_FORMAT_PANSTARRS:
-    case DVO_FORMAT_PMTEST:
-      ALLOCATE (tmpMeasurePanstarrs, MeasurePanstarrs, MAX (Nmeasure, 1));
-      nitems = fread (tmpMeasurePanstarrs, sizeof(MeasurePanstarrs), Nmeasure, f);
+    case DVO_FORMAT_PANSTARRS: {
+      MeasurePanstarrs *tmpMeasure;
+      ALLOCATE (tmpMeasure, MeasurePanstarrs, MAX (Nmeasure, 1));
+      nitems = fread (tmpMeasure, sizeof(MeasurePanstarrs), Nmeasure, f);
       if (nitems != Nmeasure) {
 	fprintf (stderr, "failed to read measures (%d vs %d)\n", nitems, Nmeasure);
 	return (NULL);
       }
-      gfits_convert_MeasurePanstarrs (tmpMeasurePanstarrs, sizeof(MeasurePanstarrs), Nmeasure);
-      measure = MeasurePanstarrsToInternal (tmpMeasurePanstarrs, Nmeasure);
-      free (tmpMeasurePanstarrs);
-      break;
+      gfits_convert_MeasurePanstarrs (tmpMeasure, sizeof(MeasurePanstarrs), Nmeasure);
+      measure = MeasurePanstarrsToInternal (tmpMeasure, Nmeasure);
+      free (tmpMeasure);
+      break; }
 # endif
     default:
@@ -518,10 +555,7 @@
 
   int nitems;
-  MeasureElixir *tmpMeasureElixir;
-  MeasureLoneos *tmpMeasureLoneos;
-  // MeasurePanstarrs *tmpMeasurePanstarrs;
 
   switch (format) {
-    case DVO_FORMAT_INTERNAL:
+    case DVO_FORMAT_INTERNAL: {
       gfits_convert_Measure (measure, sizeof(Measure), Nmeasure);
       nitems = fwrite (measure, sizeof(Measure), Nmeasure, f);
@@ -530,37 +564,50 @@
 	return (FALSE);
       }
-      break;
-    case DVO_FORMAT_ELIXIR:
-      tmpMeasureElixir = MeasureInternalToElixir (measure, Nmeasure);
-      gfits_convert_MeasureElixir (tmpMeasureElixir, sizeof(MeasureElixir), Nmeasure);
-      nitems = fwrite (tmpMeasureElixir, sizeof(MeasureElixir), Nmeasure, f);
-      free (tmpMeasureElixir);
+      break; }
+    case DVO_FORMAT_ELIXIR: {
+      MeasureElixir *tmpMeasure;
+      tmpMeasure = MeasureInternalToElixir (measure, Nmeasure);
+      gfits_convert_MeasureElixir (tmpMeasure, sizeof(MeasureElixir), Nmeasure);
+      nitems = fwrite (tmpMeasure, sizeof(MeasureElixir), Nmeasure, f);
+      free (tmpMeasure);
       if (nitems != Nmeasure) {
 	fprintf (stderr, "failed to write measures (%d vs %d)\n", nitems, Nmeasure);
 	return (FALSE);
       }
-      break;
-    case DVO_FORMAT_LONEOS:
-      tmpMeasureLoneos = MeasureInternalToLoneos (measure, Nmeasure);
-      gfits_convert_MeasureLoneos (tmpMeasureLoneos, sizeof(MeasureLoneos), Nmeasure);
-      nitems = fwrite (tmpMeasureLoneos, sizeof(MeasureLoneos), Nmeasure, f);
-      free (tmpMeasureLoneos);
+      break; }
+    case DVO_FORMAT_LONEOS: {
+      MeasureLoneos *tmpMeasure;
+      tmpMeasure = MeasureInternalToLoneos (measure, Nmeasure);
+      gfits_convert_MeasureLoneos (tmpMeasure, sizeof(MeasureLoneos), Nmeasure);
+      nitems = fwrite (tmpMeasure, sizeof(MeasureLoneos), Nmeasure, f);
+      free (tmpMeasure);
       if (nitems != Nmeasure) {
 	fprintf (stderr, "failed to write measures (%d vs %d)\n", nitems, Nmeasure);
 	return (FALSE);
       }
-      break;
+      break; }
+    case DVO_FORMAT_PANSTARRS_DEV_0: {
+      MeasurePanstarrs_DEV_0 *tmpMeasure;
+      tmpMeasure = MeasureInternalToPanstarrs_DEV_0 (measure, Nmeasure);
+      gfits_convert_MeasurePanstarrs_DEV_0 (tmpMeasure, sizeof(MeasurePanstarrs_DEV_0), Nmeasure);
+      nitems = fwrite (tmpMeasure, sizeof(MeasurePanstarrs_DEV_0), Nmeasure, f);
+      free (tmpMeasure);
+      if (nitems != Nmeasure) {
+	fprintf (stderr, "failed to write measures (%d vs %d)\n", nitems, Nmeasure);
+	return (FALSE);
+      }
+      break; }
 # if 0
-    case DVO_FORMAT_PANSTARRS:
-    case DVO_FORMAT_PMTEST:
-      tmpMeasurePanstarrs = MeasureInternalToPanstarrs (measure, Nmeasure);
-      gfits_convert_MeasurePanstarrs (tmpMeasurePanstarrs, sizeof(MeasurePanstarrs), Nmeasure);
-      nitems = fwrite (tmpMeasurePanstarrs, sizeof(MeasurePanstarrs), Nmeasure, f);
-      free (tmpMeasurePanstarrs);
+    case DVO_FORMAT_PANSTARRS: {
+      MeasurePanstarrs *tmpMeasure;
+      tmpMeasure = MeasureInternalToPanstarrs (measure, Nmeasure);
+      gfits_convert_MeasurePanstarrs (tmpMeasure, sizeof(MeasurePanstarrs), Nmeasure);
+      nitems = fwrite (tmpMeasure, sizeof(MeasurePanstarrs), Nmeasure, f);
+      free (tmpMeasure);
       if (nitems != Nmeasure) {
 	fprintf (stderr, "failed to write measures (%d vs %d)\n", nitems, Nmeasure);
 	return (FALSE);
       }
-      break;
+      break; }
 # endif
     default:
@@ -577,10 +624,7 @@
   int nitems;
   SecFilt *secfilt;
-  SecFiltElixir *tmpSecFiltElixir;
-  SecFiltLoneos *tmpSecFiltLoneos;
-  // SecFiltPanstarrs *tmpSecFiltPanstarrs;
 
   switch (format) {
-    case DVO_FORMAT_INTERNAL:
+    case DVO_FORMAT_INTERNAL: {
       ALLOCATE (secfilt, SecFilt, MAX (Nsecfilt, 1));
       nitems = fread (secfilt, sizeof(SecFilt), Nsecfilt, f);
@@ -590,40 +634,54 @@
       }
       gfits_convert_SecFilt (secfilt, sizeof(SecFilt), Nsecfilt);
-      break;
-    case DVO_FORMAT_ELIXIR:
-      ALLOCATE (tmpSecFiltElixir, SecFiltElixir, MAX (Nsecfilt, 1));
-      nitems = fread (tmpSecFiltElixir, sizeof(SecFiltElixir), Nsecfilt, f);
+      break; }
+    case DVO_FORMAT_ELIXIR: {
+      SecFiltElixir *tmpSecFilt;
+      ALLOCATE (tmpSecFilt, SecFiltElixir, MAX (Nsecfilt, 1));
+      nitems = fread (tmpSecFilt, sizeof(SecFiltElixir), Nsecfilt, f);
       if (nitems != Nsecfilt) {
 	fprintf (stderr, "failed to read secfilts (%d vs %d)\n", nitems, Nsecfilt);
 	return (NULL);
       }
-      gfits_convert_SecFiltElixir (tmpSecFiltElixir, sizeof(SecFiltElixir), Nsecfilt);
-      secfilt = SecFiltElixirToInternal (tmpSecFiltElixir, Nsecfilt);
-      free (tmpSecFiltElixir);
-      break;
-    case DVO_FORMAT_LONEOS:
-      ALLOCATE (tmpSecFiltLoneos, SecFiltLoneos, MAX (Nsecfilt, 1));
-      nitems = fread (tmpSecFiltLoneos, sizeof(SecFiltLoneos), Nsecfilt, f);
+      gfits_convert_SecFiltElixir (tmpSecFilt, sizeof(SecFiltElixir), Nsecfilt);
+      secfilt = SecFiltElixirToInternal (tmpSecFilt, Nsecfilt);
+      free (tmpSecFilt);
+      break; }
+    case DVO_FORMAT_LONEOS: {
+      SecFiltLoneos *tmpSecFilt;
+      ALLOCATE (tmpSecFilt, SecFiltLoneos, MAX (Nsecfilt, 1));
+      nitems = fread (tmpSecFilt, sizeof(SecFiltLoneos), Nsecfilt, f);
       if (nitems != Nsecfilt) {
 	fprintf (stderr, "failed to read secfilts (%d vs %d)\n", nitems, Nsecfilt);
 	return (NULL);
       }
-      gfits_convert_SecFiltLoneos (tmpSecFiltLoneos, sizeof(SecFiltLoneos), Nsecfilt);
-      secfilt = SecFiltLoneosToInternal (tmpSecFiltLoneos, Nsecfilt);
-      free (tmpSecFiltLoneos);
-      break;
+      gfits_convert_SecFiltLoneos (tmpSecFilt, sizeof(SecFiltLoneos), Nsecfilt);
+      secfilt = SecFiltLoneosToInternal (tmpSecFilt, Nsecfilt);
+      free (tmpSecFilt);
+      break; }
+    case DVO_FORMAT_PANSTARRS_DEV_0: {
+      SecFiltPanstarrs_DEV_0 *tmpSecFilt;
+      ALLOCATE (tmpSecFilt, SecFiltPanstarrs_DEV_0, MAX (Nsecfilt, 1));
+      nitems = fread (tmpSecFilt, sizeof(SecFiltPanstarrs_DEV_0), Nsecfilt, f);
+      if (nitems != Nsecfilt) {
+	fprintf (stderr, "failed to read secfilts (%d vs %d)\n", nitems, Nsecfilt);
+	return (NULL);
+      }
+      gfits_convert_SecFiltPanstarrs_DEV_0 (tmpSecFilt, sizeof(SecFiltPanstarrs_DEV_0), Nsecfilt);
+      secfilt = SecFiltPanstarrs_DEV_0_ToInternal (tmpSecFilt, Nsecfilt);
+      free (tmpSecFilt);
+      break; }
 # if 0
-    case DVO_FORMAT_PANSTARRS:
-    case DVO_FORMAT_PMTEST:
-      ALLOCATE (tmpSecFiltPanstarrs, SecFiltPanstarrs, MAX (Nsecfilt, 1));
-      nitems = fread (tmpSecFiltPanstarrs, sizeof(SecFiltPanstarrs), Nsecfilt, f);
+    case DVO_FORMAT_PANSTARRS: {
+      SecFiltPanstarrs *tmpSecFilt;
+      ALLOCATE (tmpSecFilt, SecFiltPanstarrs, MAX (Nsecfilt, 1));
+      nitems = fread (tmpSecFilt, sizeof(SecFiltPanstarrs), Nsecfilt, f);
       if (nitems != Nsecfilt) {
 	fprintf (stderr, "failed to read secfilts (%d vs %d)\n", nitems, Nsecfilt);
 	return (NULL);
       }
-      gfits_convert_SecFiltPanstarrs (tmpSecFiltPanstarrs, sizeof(SecFiltPanstarrs), Nsecfilt);
-      secfilt = SecFiltPanstarrsToInternal (tmpSecFiltPanstarrs, Nsecfilt);
-      free (tmpSecFiltPanstarrs);
-      break;
+      gfits_convert_SecFiltPanstarrs (tmpSecFilt, sizeof(SecFiltPanstarrs), Nsecfilt);
+      secfilt = SecFiltPanstarrsToInternal (tmpSecFilt, Nsecfilt);
+      free (tmpSecFilt);
+      break; }
 # endif
     default:
@@ -639,10 +697,7 @@
 
   int nitems;
-  SecFiltElixir *tmpSecFiltElixir;
-  SecFiltLoneos *tmpSecFiltLoneos;
-  // SecFiltPanstarrs *tmpSecFiltPanstarrs;
 
   switch (format) {
-    case DVO_FORMAT_INTERNAL:
+    case DVO_FORMAT_INTERNAL: {
       gfits_convert_SecFilt (secfilt, sizeof(SecFilt), Nsecfilt);
       nitems = fwrite (secfilt, sizeof(SecFilt), Nsecfilt, f);
@@ -651,37 +706,50 @@
 	return (FALSE);
       }
-      break;
-    case DVO_FORMAT_ELIXIR:
-      tmpSecFiltElixir = SecFiltInternalToElixir (secfilt, Nsecfilt);
-      gfits_convert_SecFiltElixir (tmpSecFiltElixir, sizeof(SecFiltElixir), Nsecfilt);
-      nitems = fwrite (tmpSecFiltElixir, sizeof(SecFiltElixir), Nsecfilt, f);
-      free (tmpSecFiltElixir);
+      break; }
+    case DVO_FORMAT_ELIXIR: {
+      SecFiltElixir *tmpSecFilt;
+      tmpSecFilt = SecFiltInternalToElixir (secfilt, Nsecfilt);
+      gfits_convert_SecFiltElixir (tmpSecFilt, sizeof(SecFiltElixir), Nsecfilt);
+      nitems = fwrite (tmpSecFilt, sizeof(SecFiltElixir), Nsecfilt, f);
+      free (tmpSecFilt);
       if (nitems != Nsecfilt) {
 	fprintf (stderr, "failed to write secfilts (%d vs %d)\n", nitems, Nsecfilt);
 	return (FALSE);
       }
-      break;
-    case DVO_FORMAT_LONEOS:
-      tmpSecFiltLoneos = SecFiltInternalToLoneos (secfilt, Nsecfilt);
-      gfits_convert_SecFiltLoneos (tmpSecFiltLoneos, sizeof(SecFiltLoneos), Nsecfilt);
-      nitems = fwrite (tmpSecFiltLoneos, sizeof(SecFiltLoneos), Nsecfilt, f);
-      free (tmpSecFiltLoneos);
+      break; }
+    case DVO_FORMAT_LONEOS: {
+      SecFiltLoneos *tmpSecFilt;
+      tmpSecFilt = SecFiltInternalToLoneos (secfilt, Nsecfilt);
+      gfits_convert_SecFiltLoneos (tmpSecFilt, sizeof(SecFiltLoneos), Nsecfilt);
+      nitems = fwrite (tmpSecFilt, sizeof(SecFiltLoneos), Nsecfilt, f);
+      free (tmpSecFilt);
       if (nitems != Nsecfilt) {
 	fprintf (stderr, "failed to write secfilts (%d vs %d)\n", nitems, Nsecfilt);
 	return (FALSE);
       }
-      break;
+      break; }
+    case DVO_FORMAT_PANSTARRS_DEV_0: {
+      SecFiltPanstarrs_DEV_0 *tmpSecFilt;
+      tmpSecFilt = SecFiltInternalToPanstarrs_DEV_0 (secfilt, Nsecfilt);
+      gfits_convert_SecFiltPanstarrs_DEV_0 (tmpSecFilt, sizeof(SecFiltPanstarrs_DEV_0), Nsecfilt);
+      nitems = fwrite (tmpSecFilt, sizeof(SecFiltPanstarrs_DEV_0), Nsecfilt, f);
+      free (tmpSecFilt);
+      if (nitems != Nsecfilt) {
+	fprintf (stderr, "failed to write secfilts (%d vs %d)\n", nitems, Nsecfilt);
+	return (FALSE);
+      }
+      break; }
 # if 0
-    case DVO_FORMAT_PANSTARRS:
-    case DVO_FORMAT_PMTEST:
-      tmpSecFiltPanstarrs = SecFiltInternalToPanstarrs (secfilt, Nsecfilt);
-      gfits_convert_SecFiltPanstarrs (tmpSecFiltPanstarrs, sizeof(SecFiltPanstarrs), Nsecfilt);
-      nitems = fwrite (tmpSecFiltPanstarrs, sizeof(SecFiltPanstarrs), Nsecfilt, f);
-      free (tmpSecFiltPanstarrs);
+    case DVO_FORMAT_PANSTARRS: {
+      SecFiltPanstarrs *tmpSecFilt;
+      tmpSecFilt = SecFiltInternalToPanstarrs (secfilt, Nsecfilt);
+      gfits_convert_SecFiltPanstarrs (tmpSecFilt, sizeof(SecFiltPanstarrs), Nsecfilt);
+      nitems = fwrite (tmpSecFilt, sizeof(SecFiltPanstarrs), Nsecfilt, f);
+      free (tmpSecFilt);
       if (nitems != Nsecfilt) {
 	fprintf (stderr, "failed to write secfilts (%d vs %d)\n", nitems, Nsecfilt);
 	return (FALSE);
       }
-      break;
+      break; }
 # endif
     default:
Index: /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog_split.c
===================================================================
--- /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog_split.c	(revision 12274)
+++ /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_catalog_split.c	(revision 12275)
@@ -318,5 +318,6 @@
 
   /* for the appropriate types, pull out the first secfilt and pass to AverageToFtable as primary */
-  if ((catalog[0].catformat == DVO_FORMAT_ELIXIR) || (catalog[0].catformat == DVO_FORMAT_LONEOS)) {
+  if ((catalog[0].catformat == DVO_FORMAT_ELIXIR) || // special case for ELIXIR
+      (catalog[0].catformat == DVO_FORMAT_LONEOS)) { // special case for LONEOS
     if (catalog[0].secfilt == NULL) {       
       fprintf (stderr, "missing secfilt, cannot build output averages (dvo_catalog_split.c:544)\n");
@@ -543,5 +544,6 @@
 
   /** for the appropriate types, pull out the first secfilt and pass to AverageToFtable as primary **/
-  if ((catalog[0].catformat == DVO_FORMAT_ELIXIR) || (catalog[0].catformat == DVO_FORMAT_LONEOS)) {
+  if ((catalog[0].catformat == DVO_FORMAT_ELIXIR) || // special case for ELIXIR
+      (catalog[0].catformat == DVO_FORMAT_LONEOS)) { // special case for LONEOS
     if (catalog[0].secfilt == NULL) { 
       fprintf (stderr, "missing secfilt, cannot build output averages (dvo_catalog_split.c:544)\n");
Index: /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_convert.c
===================================================================
--- /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_convert.c	(revision 12274)
+++ /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_convert.c	(revision 12275)
@@ -18,5 +18,5 @@
   char extname[80];
 
-  /* in the ELIXIR and LONEOS cases, we are supplied with an average magnitude in Average
+  /* in the Elixir and Loneos cases, we are supplied with an average magnitude in Average
      in these cases, save these values in primary; otherwise set primary to NULL */
   *primary = NULL;
@@ -48,4 +48,12 @@
     return (average);
   }
+  if (!strcmp (extname, "DVO_AVERAGE_PANSTARRS_DEV_0")) {
+    AveragePanstarrs_DEV_0 *tmpAverage;
+    tmpAverage = gfits_table_get_AveragePanstarrs_DEV_0 (ftable, Naverage, NULL);
+    average = AveragePanstarrs_DEV_0_ToInternal (tmpAverage, *Naverage);
+    free (tmpAverage);
+    *format = DVO_FORMAT_PANSTARRS_DEV_0;
+    return (average);
+  }
 /* disable the new and minimally-used versions for now.  
    put them back in after dev work is further along
@@ -78,35 +86,41 @@
 int AverageToFtable (FTable *ftable, Average *average, int Naverage, int format, SecFilt *primary) {
 
-  AverageElixir *tmpAverageElixir;
-  AverageLoneos *tmpAverageLoneos ;
-  // AveragePanstarrs *tmpAveragePanstarrs;
-  // AveragePMtest *tmpAveragePMtest;
 
   /* convert from the internal format */
   switch (format) {
-    case DVO_FORMAT_INTERNAL:
+    case DVO_FORMAT_INTERNAL: {
       gfits_table_set_Average (ftable, average, Naverage);
-      break;
-    case DVO_FORMAT_ELIXIR:
-      tmpAverageElixir = AverageInternalToElixir (average, Naverage, primary);
-      gfits_table_set_AverageElixir (ftable, tmpAverageElixir, Naverage);
-      free (tmpAverageElixir);
-      break;
-    case DVO_FORMAT_LONEOS:
-      tmpAverageLoneos  = AverageInternalToLoneos (average, Naverage, primary);
-      gfits_table_set_AverageLoneos (ftable, tmpAverageLoneos, Naverage);
-      free (tmpAverageLoneos );
-      break;
-# if 0
-    case DVO_FORMAT_PANSTARRS:
-      tmpAveragePanstarrs = AverageInternalToPanstarrs (average, Naverage);
-      gfits_table_set_AveragePanstarrs (ftable, tmpAveragePanstarrs, Naverage);
-      free (tmpAveragePanstarrs);
-      break;
-    case DVO_FORMAT_PMTEST:
-      tmpAveragePMtest = AverageInternalToPMtest (average, Naverage);
-      gfits_table_set_AveragePMtest (ftable, tmpAveragePMtest, Naverage);
-      free (tmpAveragePMtest);
-      break;
+      break; }
+    case DVO_FORMAT_ELIXIR: {
+      AverageElixir *tmpAverage;
+      tmpAverage = AverageInternalToElixir (average, Naverage, primary);
+      gfits_table_set_AverageElixir (ftable, tmpAverage, Naverage);
+      free (tmpAverage);
+      break; }
+    case DVO_FORMAT_LONEOS: {
+      AverageLoneos *tmpAverage ;
+      tmpAverage  = AverageInternalToLoneos (average, Naverage, primary);
+      gfits_table_set_AverageLoneos (ftable, tmpAverage, Naverage);
+      free (tmpAverage );
+      break; }
+    case DVO_FORMAT_PANSTARRS_DEV_0: {
+      AveragePanstarrs_DEV_0 *tmpAverage;
+      tmpAverage = AverageInternalToPanstarrs_DEV_0 (average, Naverage);
+      gfits_table_set_AveragePanstarrs_DEV_0 (ftable, tmpAverage, Naverage);
+      free (tmpAverage);
+      break; }
+# if 0
+    case DVO_FORMAT_PANSTARRS: {
+      AveragePanstarrs *tmpAverage;
+      tmpAverage = AverageInternalToPanstarrs (average, Naverage);
+      gfits_table_set_AveragePanstarrs (ftable, tmpAverage, Naverage);
+      free (tmpAverage);
+      break; }
+    case DVO_FORMAT_PMTEST: {
+      AveragePMtest *tmpAverage;
+      tmpAverage = AverageInternalToPMtest (average, Naverage);
+      gfits_table_set_AveragePMtest (ftable, tmpAverage, Naverage);
+      free (tmpAverage);
+      break; }
 # endif
     default:
@@ -150,4 +164,12 @@
     return (measure);
   }
+  if (!strcmp (extname, "DVO_MEASURE_PANSTARRS_DEV_0")) {
+    MeasurePanstarrs_DEV_0 *tmpMeasure;
+    tmpMeasure = gfits_table_get_MeasurePanstarrs_DEV_0 (ftable, Nmeasure, NULL);
+    measure = MeasurePanstarrs_DEV_0_ToInternal (tmpMeasure, *Nmeasure);
+    free (tmpMeasure);
+    *format = DVO_FORMAT_PANSTARRS_DEV_0;
+    return (measure);
+  }
 # if 0
   if (!strcmp (extname, "DVO_MEASURE_PANSTARRS") || !strcmp (extname, "DVO_MEASURE_PMTEST")) {
@@ -169,30 +191,35 @@
 int MeasureToFtable (FTable *ftable, Measure *measure, int Nmeasure, int format) {
 
-  MeasureElixir *tmpMeasureElixir;
-  MeasureLoneos *tmpMeasureLoneos;
-  // MeasurePanstarrs *tmpMeasurePanstarrs;
 
   /* convert from the internal format */
   switch (format) {
-    case DVO_FORMAT_INTERNAL:
+    case DVO_FORMAT_INTERNAL: {
       gfits_table_set_Measure (ftable, measure, Nmeasure);
-      break;
-    case DVO_FORMAT_ELIXIR:
-      tmpMeasureElixir = MeasureInternalToElixir (measure, Nmeasure);
-      gfits_table_set_MeasureElixir (ftable, tmpMeasureElixir, Nmeasure);
-      free (tmpMeasureElixir);
-      break;
-    case DVO_FORMAT_LONEOS:
-      tmpMeasureLoneos = MeasureInternalToLoneos (measure, Nmeasure);
-      gfits_table_set_MeasureLoneos (ftable, tmpMeasureLoneos, Nmeasure);
-      free (tmpMeasureLoneos);
-      break;
-# if 0
-    case DVO_FORMAT_PANSTARRS:
-    case DVO_FORMAT_PMTEST:
-      tmpMeasurePanstarrs = MeasureInternalToPanstarrs (measure, Nmeasure);
-      gfits_table_set_MeasurePanstarrs (ftable, tmpMeasurePanstarrs, Nmeasure);
-      free (tmpMeasurePanstarrs);
-      break;
+      break; }
+    case DVO_FORMAT_ELIXIR: {
+      MeasureElixir *tmpMeasure;
+      tmpMeasure = MeasureInternalToElixir (measure, Nmeasure);
+      gfits_table_set_MeasureElixir (ftable, tmpMeasure, Nmeasure);
+      free (tmpMeasure);
+      break; }
+    case DVO_FORMAT_LONEOS: {
+      MeasureLoneos *tmpMeasure;
+      tmpMeasure = MeasureInternalToLoneos (measure, Nmeasure);
+      gfits_table_set_MeasureLoneos (ftable, tmpMeasure, Nmeasure);
+      free (tmpMeasure);
+      break; }
+    case DVO_FORMAT_PANSTARRS_DEV_0: {
+      MeasurePanstarrs_DEV_0 *tmpMeasure;
+      tmpMeasure = MeasureInternalToPanstarrs_DEV_0 (measure, Nmeasure);
+      gfits_table_set_MeasurePanstarrs_DEV_0 (ftable, tmpMeasure, Nmeasure);
+      free (tmpMeasure);
+      break; }
+# if 0
+    case DVO_FORMAT_PANSTARRS: {
+      MeasurePanstarrs *tmpMeasure;
+      tmpMeasure = MeasureInternalToPanstarrs (measure, Nmeasure);
+      gfits_table_set_MeasurePanstarrs (ftable, tmpMeasure, Nmeasure);
+      free (tmpMeasure);
+      break; }
 # endif
     default:
@@ -236,4 +263,12 @@
     return (secfilt);
   }
+  if (!strcmp (extname, "DVO_SECFILT_PANSTARRS_DEV_0")) {
+    SecFiltPanstarrs_DEV_0 *tmpSecFilt;
+    tmpSecFilt = gfits_table_get_SecFiltPanstarrs_DEV_0 (ftable, Nsecfilt, NULL);
+    secfilt = SecFiltPanstarrs_DEV_0_ToInternal (tmpSecFilt, *Nsecfilt);
+    free (tmpSecFilt);
+    *format = DVO_FORMAT_PANSTARRS_DEV_0;
+    return (secfilt);
+  }
 # if 0
   if (!strcmp (extname, "DVO_SECFILT_PANSTARRS") || !strcmp (extname, "DVO_SECFILT_PMTEST")) {
@@ -255,30 +290,34 @@
 int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, int Nsecfilt, int format) {
 
-  SecFiltElixir *tmpSecFiltElixir;
-  SecFiltLoneos *tmpSecFiltLoneos;
-  // SecFiltPanstarrs *tmpSecFiltPanstarrs;
-
   /* convert from the internal format */
   switch (format) {
-    case DVO_FORMAT_INTERNAL:
+    case DVO_FORMAT_INTERNAL: {
       gfits_table_set_SecFilt (ftable, secfilt, Nsecfilt);
-      break;
-    case DVO_FORMAT_ELIXIR:
-      tmpSecFiltElixir = SecFiltInternalToElixir (secfilt, Nsecfilt);
-      gfits_table_set_SecFiltElixir (ftable, tmpSecFiltElixir, Nsecfilt);
-      free (tmpSecFiltElixir);
-      break;
-    case DVO_FORMAT_LONEOS:
-      tmpSecFiltLoneos = SecFiltInternalToLoneos (secfilt, Nsecfilt);
-      gfits_table_set_SecFiltLoneos (ftable, tmpSecFiltLoneos, Nsecfilt);
-      free (tmpSecFiltLoneos);
-      break;
-# if 0
-    case DVO_FORMAT_PANSTARRS:
-    case DVO_FORMAT_PMTEST:
-      tmpSecFiltPanstarrs = SecFiltInternalToPanstarrs (secfilt, Nsecfilt);
-      gfits_table_set_SecFiltPanstarrs (ftable, tmpSecFiltPanstarrs, Nsecfilt);
-      free (tmpSecFiltPanstarrs);
-      break;
+      break; }
+    case DVO_FORMAT_ELIXIR: {
+      SecFiltElixir *tmpSecFilt;
+      tmpSecFilt = SecFiltInternalToElixir (secfilt, Nsecfilt);
+      gfits_table_set_SecFiltElixir (ftable, tmpSecFilt, Nsecfilt);
+      free (tmpSecFilt);
+      break; }
+    case DVO_FORMAT_LONEOS: {
+      SecFiltLoneos *tmpSecFilt;
+      tmpSecFilt = SecFiltInternalToLoneos (secfilt, Nsecfilt);
+      gfits_table_set_SecFiltLoneos (ftable, tmpSecFilt, Nsecfilt);
+      free (tmpSecFilt);
+      break; }
+    case DVO_FORMAT_PANSTARRS_DEV_0: {
+      SecFiltPanstarrs_DEV_0 *tmpSecFilt;
+      tmpSecFilt = SecFiltInternalToPanstarrs_DEV_0 (secfilt, Nsecfilt);
+      gfits_table_set_SecFiltPanstarrs_DEV_0 (ftable, tmpSecFilt, Nsecfilt);
+      free (tmpSecFilt);
+      break; }
+# if 0
+    case DVO_FORMAT_PANSTARRS: {
+      SecFiltPanstarrs *tmpSecFilt;
+      tmpSecFilt = SecFiltInternalToPanstarrs (secfilt, Nsecfilt);
+      gfits_table_set_SecFiltPanstarrs (ftable, tmpSecFilt, Nsecfilt);
+      free (tmpSecFilt);
+      break; }
 # endif
     default:
@@ -297,5 +336,5 @@
 
   /* extname may be set from outside if the source is RAW not MEF */
-  if (*format == DVO_FORMAT_ELIXIR) {
+  if (*format == DVO_FORMAT_ELIXIR) {		  // special case for ELIXIR
     ImageElixir *tmpimage;
     tmpimage = gfits_table_get_ImageElixir (ftable, &Nimage, NULL);
@@ -332,4 +371,12 @@
     goto set_header;
   }
+  if (!strcmp (extname, "DVO_IMAGE_PANSTARRS_DEV_0")) {
+    ImagePanstarrs_DEV_0 *tmpimage;
+    *format = DVO_FORMAT_PANSTARRS_DEV_0;
+    tmpimage = gfits_table_get_ImagePanstarrs_DEV_0 (ftable, &Nimage, NULL);
+    ftable[0].buffer = (char *) ImagePanstarrs_DEV_0_ToInternal (tmpimage, Nimage);
+    free (tmpimage);
+    goto set_header;
+  }
 # if 0
   if (!strcmp (extname, "DVO_IMAGE_PANSTARRS") || !strcmp (extname, "DVO_IMAGE_PMTEST")) {
@@ -357,7 +404,4 @@
 
   int Nimage;
-  ImageElixir *tmpImageElixir;
-  ImageLoneos *tmpImageLoneos;
-  // ImagePanstarrs *tmpImagePanstarrs;
 
   Nimage = theader[0].Naxis[1];
@@ -365,27 +409,36 @@
   /* convert from the internal format */
   switch (format) {
-    case DVO_FORMAT_INTERNAL:
+    case DVO_FORMAT_INTERNAL: {
       gfits_convert_Image ((Image *) ftable[0].buffer, sizeof(Image), Nimage);
-      break;
-    case DVO_FORMAT_ELIXIR:
-      tmpImageElixir = ImageInternalToElixir ((Image *) ftable[0].buffer, Nimage);
+      break; }
+    case DVO_FORMAT_ELIXIR: {
+      ImageElixir *tmpImage;
+      tmpImage = ImageInternalToElixir ((Image *) ftable[0].buffer, Nimage);
       free (ftable[0].buffer);
-      gfits_table_set_ImageElixir (ftable, tmpImageElixir, Nimage);
-      free (tmpImageElixir);
-      break;
-    case DVO_FORMAT_LONEOS:
-      tmpImageLoneos = ImageInternalToLoneos ((Image *) ftable[0].buffer, Nimage);
+      gfits_table_set_ImageElixir (ftable, tmpImage, Nimage);
+      free (tmpImage);
+      break; }
+    case DVO_FORMAT_LONEOS: {
+      ImageLoneos *tmpImage;
+      tmpImage = ImageInternalToLoneos ((Image *) ftable[0].buffer, Nimage);
       free (ftable[0].buffer);
-      gfits_table_set_ImageLoneos (ftable, tmpImageLoneos, Nimage);
-      free (tmpImageLoneos);
-      break;
-# if 0
-    case DVO_FORMAT_PANSTARRS:
-    case DVO_FORMAT_PMTEST:
-      tmpImagePanstarrs = ImageInternalToPanstarrs ((Image *) ftable[0].buffer, Nimage);
+      gfits_table_set_ImageLoneos (ftable, tmpImage, Nimage);
+      free (tmpImage);
+      break; }
+    case DVO_FORMAT_PANSTARRS_DEV_0: {
+      ImagePanstarrs_DEV_0 *tmpImage;
+      tmpImage = ImageInternalToPanstarrs_DEV_0 ((Image *) ftable[0].buffer, Nimage);
       free (ftable[0].buffer);
-      gfits_table_set_ImagePanstarrs (ftable, tmpImagePanstarrs, Nimage);
-      free (tmpImagePanstarrs);
-      break;
+      gfits_table_set_ImagePanstarrs_DEV_0 (ftable, tmpImage, Nimage);
+      free (tmpImage);
+      break; }
+# if 0
+    case DVO_FORMAT_PANSTARRS: {
+      ImagePanstarrs *tmpImage;
+      tmpImage = ImageInternalToPanstarrs ((Image *) ftable[0].buffer, Nimage);
+      free (ftable[0].buffer);
+      gfits_table_set_ImagePanstarrs (ftable, tmpImage, Nimage);
+      free (tmpImage);
+      break; }
 # endif
     default:
@@ -398,7 +451,4 @@
 int ImageToVtable (VTable *vtable, Header *theader, int format) {
 
-  ImageElixir *tmpImageElixir;
-  ImageLoneos *tmpImageLoneos;
-  // ImagePanstarrs *tmpImagePanstarrs;
   int i, Nrow, Nimage;
 
@@ -407,16 +457,17 @@
   /* convert from the internal format */
   switch (format) {
-    case DVO_FORMAT_INTERNAL:
+    case DVO_FORMAT_INTERNAL: {
       for (i = 0; i < Nrow; i++) {
 	gfits_convert_Image ((Image *) vtable[0].buffer[i], sizeof(Image), 1);
       }
-      return (TRUE);
-    case DVO_FORMAT_ELIXIR:
+      return (TRUE); }
+    case DVO_FORMAT_ELIXIR: {
+      ImageElixir *tmpImage;
       /* convert table rows from internal to external format */
       for (i = 0; i < Nrow; i++) {
-	tmpImageElixir = ImageInternalToElixir ((Image *) vtable[0].buffer[i], 1);
-	gfits_convert_ImageElixir (tmpImageElixir, sizeof(ImageElixir), 1);
+	tmpImage = ImageInternalToElixir ((Image *) vtable[0].buffer[i], 1);
+	gfits_convert_ImageElixir (tmpImage, sizeof(ImageElixir), 1);
 	free (vtable[0].buffer[i]);
-	vtable[0].buffer[i] = (char *) tmpImageElixir;
+	vtable[0].buffer[i] = (char *) tmpImage;
       }
 
@@ -430,12 +481,13 @@
       theader[0].Naxis[1] = Nimage;
       vtable[0].size = gfits_matrix_size (theader);
-      return (TRUE);
-    case DVO_FORMAT_LONEOS:
+      return (TRUE); }
+    case DVO_FORMAT_LONEOS: {
+      ImageLoneos *tmpImage;
       /* convert table rows from internal to external format */
       for (i = 0; i < Nrow; i++) {
-	tmpImageLoneos = ImageInternalToLoneos ((Image *) vtable[0].buffer[i], 1);
-	gfits_convert_ImageLoneos (tmpImageLoneos, sizeof(ImageLoneos), 1);
+	tmpImage = ImageInternalToLoneos ((Image *) vtable[0].buffer[i], 1);
+	gfits_convert_ImageLoneos (tmpImage, sizeof(ImageLoneos), 1);
 	free (vtable[0].buffer[i]);
-	vtable[0].buffer[i] = (char *) tmpImageLoneos;
+	vtable[0].buffer[i] = (char *) tmpImage;
       }
 
@@ -449,17 +501,32 @@
       theader[0].Naxis[1] = Nimage;
       vtable[0].size = gfits_matrix_size (theader);
-      return (TRUE);
-# if 0
-    case DVO_FORMAT_PANSTARRS:
-    case DVO_FORMAT_PMTEST:
+      return (TRUE); }
+    case DVO_FORMAT_PANSTARRS_DEV_0: {
+      ImagePanstarrs_DEV_0 *tmpImage;
       /* convert table rows from internal to external format */
       for (i = 0; i < Nrow; i++) {
-	tmpImagePanstarrs = ImageInternalToPanstarrs ((Image *) vtable[0].buffer[i], 1);
-	gfits_convert_ImagePanstarrs (tmpImagePanstarrs, sizeof(ImagePanstarrs), 1);
+	tmpImage = ImageInternalToPanstarrs_DEV_0 ((Image *) vtable[0].buffer[i], 1);
+	gfits_convert_ImagePanstarrs_DEV_0 (tmpImage, sizeof(ImagePanstarrs_DEV_0), 1);
 	free (vtable[0].buffer[i]);
-	vtable[0].buffer[i] = (char *) tmpImagePanstarrs;
+	vtable[0].buffer[i] = (char *) tmpImage;
       }
-# endif
-
+      /* convert header from old format to new format */
+      gfits_scan (theader, "NAXIS2", "%d", 1, &Nimage);
+      gfits_free_header (theader);
+      gfits_table_mkheader_ImagePanstarrs_DEV_0 (theader);
+      gfits_modify (theader, "NAXIS2", "%d", 1, Nimage);
+      theader[0].Naxis[1] = Nimage;
+      vtable[0].size = gfits_matrix_size (theader);
+      return (TRUE); }
+# if 0
+    case DVO_FORMAT_PANSTARRS: {
+      ImagePanstarrs *tmpImage;
+      /* convert table rows from internal to external format */
+      for (i = 0; i < Nrow; i++) {
+	tmpImage = ImageInternalToPanstarrs ((Image *) vtable[0].buffer[i], 1);
+	gfits_convert_ImagePanstarrs (tmpImage, sizeof(ImagePanstarrs), 1);
+	free (vtable[0].buffer[i]);
+	vtable[0].buffer[i] = (char *) tmpImage;
+      }
       /* convert header from old format to new format */
       gfits_scan (theader, "NAXIS2", "%d", 1, &Nimage);
@@ -469,5 +536,6 @@
       theader[0].Naxis[1] = Nimage;
       vtable[0].size = gfits_matrix_size (theader);
-      return (TRUE);
+      return (TRUE); }
+# endif
     default:
       break;
Index: /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c
===================================================================
--- /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c	(revision 12275)
+++ /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c	(revision 12275)
@@ -0,0 +1,295 @@
+# include <dvo.h>
+
+/* convert panstarrs-format measures to internal measures */
+Measure *MeasurePanstarrs_DEV_0_ToInternal (MeasurePanstarrs_DEV_0 *in, int Nvalues) {
+
+  int i;
+  Measure *out;
+
+  ALLOCATE (out, Measure, Nvalues);
+
+  for (i = 0; i < Nvalues; i++) {
+    out[i].dR         = in[i].dR;
+    out[i].dD         = in[i].dD;
+    out[i].M          = in[i].M;
+    out[i].dM         = in[i].dM;
+    out[i].Mcal       = in[i].Mcal;
+    out[i].Mgal       = in[i].Mgal;
+    out[i].airmass    = in[i].airmass;
+    out[i].az         = in[i].az;
+    out[i].dt         = in[i].dt;
+    out[i].FWx 	      = in[i].FWx;
+    out[i].FWy 	      = in[i].FWy;
+    out[i].theta      = in[i].theta;
+    out[i].dophot     = in[i].dophot;
+    out[i].photcode   = in[i].photcode;
+    out[i].t          = in[i].t;
+    out[i].averef     = in[i].averef;
+    out[i].flags      = in[i].flags;
+    out[i].Xccd       = in[i].Xccd;
+    out[i].Yccd       = in[i].Yccd;
+    out[i].dXccd      = in[i].dXccd;
+    out[i].dYccd      = in[i].dYccd;
+    out[i].stargal    = in[i].stargal;
+    out[i].Sky        = in[i].Sky;
+    out[i].dSky       = in[i].dSky;
+    out[i].qPSF       = in[i].qPSF;
+    out[i].detID_hi   = in[i].detID_hi;
+    out[i].detID_lo   = in[i].detID_lo;
+    out[i].imageID_hi = in[i].imageID_hi;
+    out[i].imageID_lo = in[i].imageID_lo;
+  }
+  return (out);
+}
+
+/* convert internal measures to panstarrs-format measures */
+MeasurePanstarrs_DEV_0 *MeasureInternalToPanstarrs_DEV_0 (Measure *in, int Nvalues) {
+
+  int i;
+  MeasurePanstarrs_DEV_0 *out;
+
+  ALLOCATE (out, MeasurePanstarrs_DEV_0, Nvalues);
+
+  for (i = 0; i < Nvalues; i++) {
+    out[i].dR         = in[i].dR;
+    out[i].dD         = in[i].dD;
+    out[i].M          = in[i].M;
+    out[i].dM         = in[i].dM;
+    out[i].Mcal       = in[i].Mcal;
+    out[i].Mgal       = in[i].Mgal;
+    out[i].airmass    = in[i].airmass;
+    out[i].az         = in[i].az;
+    out[i].dt         = in[i].dt;
+    out[i].FWx 	      = in[i].FWx;
+    out[i].FWy 	      = in[i].FWy;
+    out[i].theta      = in[i].theta;
+    out[i].dophot     = in[i].dophot;
+    out[i].photcode   = in[i].photcode;
+    out[i].t          = in[i].t;
+    out[i].averef     = in[i].averef;
+    out[i].flags      = in[i].flags;
+    out[i].Xccd       = in[i].Xccd;
+    out[i].Yccd       = in[i].Yccd;
+    out[i].dXccd      = in[i].dXccd;
+    out[i].dYccd      = in[i].dYccd;
+    out[i].stargal    = in[i].stargal;
+    out[i].Sky        = in[i].Sky;
+    out[i].dSky       = in[i].dSky;
+    out[i].qPSF       = in[i].qPSF;
+    out[i].detID_hi   = in[i].detID_hi;
+    out[i].detID_lo   = in[i].detID_lo;
+    out[i].imageID_hi = in[i].imageID_hi;
+    out[i].imageID_lo = in[i].imageID_lo;
+  }
+  return (out);
+}
+
+/* convert panstarrs-format averages to internal averages */
+Average *AveragePanstarrs_DEV_0_ToInternal (AveragePanstarrs_DEV_0 *in, int Nvalues) {
+
+  int i;
+  Average *out;
+
+  ALLOCATE (out, Average, Nvalues);
+
+  for (i = 0; i < Nvalues; i++) {
+    out[i].R        = in[i].R;      
+    out[i].D        = in[i].D;      
+    out[i].Xp       = in[i].Xp;     
+    out[i].Nm       = in[i].Nm;     
+    out[i].Nn       = in[i].Nn;     
+    out[i].code     = in[i].code;   
+    out[i].offset   = in[i].offset; 
+    out[i].missing  = in[i].missing;
+    out[i].dR       = in[i].dR;
+    out[i].dD       = in[i].dD;
+    out[i].uR       = in[i].uR;
+    out[i].uD       = in[i].uD;
+    out[i].duR      = in[i].duR;
+    out[i].duD      = in[i].duD;
+    out[i].P        = in[i].P;
+    out[i].dP       = in[i].dP;
+    out[i].objID_hi = in[i].objID_hi;
+    out[i].objID_lo = in[i].objID_lo;
+  }
+  return (out);
+}
+
+/* convert internal averages to panstarrs-format averages */
+AveragePanstarrs_DEV_0 *AverageInternalToPanstarrs_DEV_0 (Average *in, int Nvalues) {
+
+  int i;
+  AveragePanstarrs_DEV_0 *out;
+
+  ALLOCATE (out, AveragePanstarrs_DEV_0, Nvalues);
+
+  for (i = 0; i < Nvalues; i++) {
+    out[i].R        = in[i].R;      
+    out[i].D        = in[i].D;      
+    out[i].Xp       = in[i].Xp;     
+    out[i].Nm       = in[i].Nm;     
+    out[i].Nn       = in[i].Nn;     
+    out[i].code     = in[i].code;   
+    out[i].offset   = in[i].offset; 
+    out[i].missing  = in[i].missing;
+    out[i].dR       = in[i].dR;
+    out[i].dD       = in[i].dD;
+    out[i].uR       = in[i].uR;
+    out[i].uD       = in[i].uD;
+    out[i].duR      = in[i].duR;
+    out[i].duD      = in[i].duD;
+    out[i].P        = in[i].P;
+    out[i].dP       = in[i].dP;
+    out[i].objID_hi = in[i].objID_hi;
+    out[i].objID_lo = in[i].objID_lo;
+  }
+  return (out);
+}
+
+/* convert panstarrs-format secfilts to internal secfilts */
+SecFilt *SecFiltPanstarrs_DEV_0_ToInternal (SecFiltPanstarrs_DEV_0 *in, int Nvalues) {
+
+  int i;
+  SecFilt *out;
+
+  ALLOCATE (out, SecFilt, Nvalues);
+
+  for (i = 0; i < Nvalues; i++) {
+    out[i].M     = in[i].M;      
+    out[i].dM    = in[i].dM;      
+    out[i].Xm    = in[i].Xm;     
+    out[i].Ncode = in[i].Ncode;
+    out[i].Nused = in[i].Nused;
+ }
+  return (out);
+}
+
+/* convert internal secfilts to panstarrs-format secfilts */
+SecFiltPanstarrs_DEV_0 *SecFiltInternalToPanstarrs_DEV_0 (SecFilt *in, int Nvalues) {
+
+  int i;
+  SecFiltPanstarrs_DEV_0 *out;
+
+  ALLOCATE (out, SecFiltPanstarrs_DEV_0, Nvalues);
+
+  for (i = 0; i < Nvalues; i++) {
+    out[i].M     = in[i].M;      
+    out[i].dM    = in[i].dM;      
+    out[i].Xm    = in[i].Xm;     
+    out[i].Ncode = in[i].Ncode;
+    out[i].Nused = in[i].Nused;
+  }
+  return (out);
+}
+
+/* convert panstarrs-format images to internal images */
+Image *ImagePanstarrs_DEV_0_ToInternal (ImagePanstarrs_DEV_0 *in, int Nvalues) {
+
+  int i;
+  Image *out;
+
+  ALLOCATE (out, Image, Nvalues);
+
+  for (i = 0; i < Nvalues; i++) {
+    memcpy (&out[i].coords, &in[i].coords, sizeof(Coords));
+    strcpy (out[i].name, in[i].name);
+
+    out[i].tzero    	    = in[i].tzero;
+    out[i].nstar    	    = in[i].nstar;
+    out[i].secz	    	    = in[i].secz;
+    out[i].NX	    	    = in[i].NX;
+    out[i].NY	    	    = in[i].NY;
+    out[i].apmifit  	    = in[i].apmifit;
+    out[i].dapmifit 	    = in[i].dapmifit;
+    out[i].Mcal	    	    = in[i].Mcal;
+    out[i].dMcal    	    = in[i].dMcal;
+    out[i].Xm	    	    = in[i].Xm;
+    out[i].photcode   	    = in[i].photcode;
+    out[i].exptime  	    = in[i].exptime;
+    out[i].sidtime  	    = in[i].sidtime;
+    out[i].latitude  	    = in[i].latitude;
+    out[i].detection_limit  = in[i].detection_limit;
+    out[i].saturation_limit = in[i].saturation_limit;
+    out[i].cerror	    = in[i].cerror;
+    out[i].fwhm_x	    = in[i].fwhm_x;
+    out[i].fwhm_y	    = in[i].fwhm_y;
+    out[i].trate	    = in[i].trate;
+    out[i].code		    = in[i].code;
+    out[i].ccdnum	    = in[i].ccdnum;
+    out[i].imageID_hi	    = in[i].imageID_hi;
+    out[i].imageID_lo	    = in[i].imageID_lo;
+
+    out[i].order	    = in[i].order;
+    out[i].Mx		    = in[i].Mx;
+    out[i].My		    = in[i].My;
+    out[i].Mxx		    = in[i].Mxx;
+    out[i].Mxy		    = in[i].Mxy;
+    out[i].Myy		    = in[i].Myy;
+    out[i].Mxxx		    = in[i].Mxxx;
+    out[i].Mxxy		    = in[i].Mxxy;
+    out[i].Mxyy		    = in[i].Mxyy;
+    out[i].Myyy		    = in[i].Myyy;
+    out[i].Mxxxx	    = in[i].Mxxxx;
+    out[i].Mxxxy	    = in[i].Mxxxy;
+    out[i].Mxxyy	    = in[i].Mxxyy;
+    out[i].Mxyyy	    = in[i].Mxyyy;
+    out[i].Myyyy	    = in[i].Myyyy;
+  }
+  return (out);
+}
+
+/* convert internal images to panstarrs-format images */
+ImagePanstarrs_DEV_0 *ImageInternalToPanstarrs_DEV_0 (Image *in, int Nvalues) {
+
+  int i;
+  ImagePanstarrs_DEV_0 *out;
+
+  ALLOCATE (out, ImagePanstarrs_DEV_0, Nvalues);
+
+  for (i = 0; i < Nvalues; i++) {
+    memcpy (&out[i].coords, &in[i].coords, sizeof(Coords));
+    strcpy (out[i].name, in[i].name);
+
+    out[i].tzero    	    = in[i].tzero;
+    out[i].nstar    	    = in[i].nstar;
+    out[i].secz	    	    = in[i].secz;
+    out[i].NX	    	    = in[i].NX;
+    out[i].NY	    	    = in[i].NY;
+    out[i].apmifit  	    = in[i].apmifit;
+    out[i].dapmifit 	    = in[i].dapmifit;
+    out[i].Mcal	    	    = in[i].Mcal;
+    out[i].dMcal    	    = in[i].dMcal;
+    out[i].Xm	    	    = in[i].Xm;
+    out[i].photcode   	    = in[i].photcode;
+    out[i].exptime  	    = in[i].exptime;
+    out[i].sidtime  	    = in[i].sidtime;
+    out[i].latitude  	    = in[i].latitude;
+    out[i].detection_limit  = in[i].detection_limit;
+    out[i].saturation_limit = in[i].saturation_limit;
+    out[i].cerror	    = in[i].cerror;
+    out[i].fwhm_x	    = in[i].fwhm_x;
+    out[i].fwhm_y	    = in[i].fwhm_y;
+    out[i].trate	    = in[i].trate;
+    out[i].code		    = in[i].code;
+    out[i].ccdnum	    = in[i].ccdnum;
+    out[i].imageID_hi	    = in[i].imageID_hi;
+    out[i].imageID_lo	    = in[i].imageID_lo;
+
+    out[i].order	    = in[i].order;
+    out[i].Mx		    = in[i].Mx;
+    out[i].My		    = in[i].My;
+    out[i].Mxx		    = in[i].Mxx;
+    out[i].Mxy		    = in[i].Mxy;
+    out[i].Myy		    = in[i].Myy;
+    out[i].Mxxx		    = in[i].Mxxx;
+    out[i].Mxxy		    = in[i].Mxxy;
+    out[i].Mxyy		    = in[i].Mxyy;
+    out[i].Myyy		    = in[i].Myyy;
+    out[i].Mxxxx	    = in[i].Mxxxx;
+    out[i].Mxxxy	    = in[i].Mxxxy;
+    out[i].Mxxyy	    = in[i].Mxxyy;
+    out[i].Mxyyy	    = in[i].Mxyyy;
+    out[i].Myyyy	    = in[i].Myyyy;
+  }
+  return (out);
+}
Index: /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_image.c
===================================================================
--- /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_image.c	(revision 12274)
+++ /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_image.c	(revision 12275)
@@ -187,9 +187,10 @@
   gfits_modify (&db[0].header, "ZERO_PT", "%lf", 1, ZeroPoint);
 
-  if (db[0].format == DVO_FORMAT_INTERNAL)  gfits_modify (&db[0].header, "FORMAT", "%s", 1, "INTERNAL");
-  if (db[0].format == DVO_FORMAT_LONEOS)    gfits_modify (&db[0].header, "FORMAT", "%s", 1, "LONEOS");
-  if (db[0].format == DVO_FORMAT_ELIXIR)    gfits_modify (&db[0].header, "FORMAT", "%s", 1, "ELIXIR");
-  if (db[0].format == DVO_FORMAT_PANSTARRS) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PANSTARRS");
-  if (db[0].format == DVO_FORMAT_PMTEST)    gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PMTEST");
+  if (db[0].format == DVO_FORMAT_INTERNAL)  	  gfits_modify (&db[0].header, "FORMAT", "%s", 1, "INTERNAL");
+  if (db[0].format == DVO_FORMAT_LONEOS)    	  gfits_modify (&db[0].header, "FORMAT", "%s", 1, "LONEOS");
+  if (db[0].format == DVO_FORMAT_ELIXIR)    	  gfits_modify (&db[0].header, "FORMAT", "%s", 1, "ELIXIR");
+  if (db[0].format == DVO_FORMAT_PANSTARRS_DEV_0) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PANSTARRS_DEV_0");
+  // if (db[0].format == DVO_FORMAT_PANSTARRS) 	  gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PANSTARRS");
+  // if (db[0].format == DVO_FORMAT_PMTEST)    	  gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PMTEST");
   
   return;
Index: /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_image_raw.c
===================================================================
--- /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_image_raw.c	(revision 12274)
+++ /branches/dvo-mods-2007-02/Ohana/src/libdvo/src/dvo_image_raw.c	(revision 12275)
@@ -20,18 +20,14 @@
   db[0].format = DVO_FORMAT_UNDEF;
   if (gfits_scan (&db[0].header, "FORMAT",  "%s", 1, format)) {
-    if (!strcmp (format, "INTERNAL")) db[0].format = DVO_FORMAT_INTERNAL;
-    if (!strcmp (format, "LONEOS")) db[0].format = DVO_FORMAT_LONEOS;
-    if (!strcmp (format, "ELIXIR")) db[0].format = DVO_FORMAT_ELIXIR;
-    if (!strcmp (format, "PANSTARRS")) db[0].format = DVO_FORMAT_PANSTARRS;
-    if (!strcmp (format, "PMTEST")) db[0].format = DVO_FORMAT_PANSTARRS;
+    db[0].format = dvo_catalog_catformat (format);
     if (db[0].format != DVO_FORMAT_UNDEF) goto got_format;
   }
   if (gfits_scan (&db[0].header, "TELESCOP",  "%s", 1, telescope)) {
     if (!strncmp (telescope, "LONEOS", strlen("LONEOS"))) {
-      db[0].format = DVO_FORMAT_LONEOS;
+      db[0].format = DVO_FORMAT_LONEOS; // special case for LONEOS
       goto got_format;
     }
     if (!strncmp (telescope, "1.3m McGraw-Hill", strlen("1.3m McGraw-Hill"))) {
-      db[0].format = DVO_FORMAT_ELIXIR;
+      db[0].format = DVO_FORMAT_ELIXIR; // special case for ELIXIR
       goto got_format;
     }
@@ -51,8 +47,9 @@
   /* get datatype size */
   ImageSize = 0;
-  if (db[0].format == DVO_FORMAT_INTERNAL)  ImageSize = sizeof(Image);
-  if (db[0].format == DVO_FORMAT_LONEOS)    ImageSize = sizeof(ImageLoneos);
-  if (db[0].format == DVO_FORMAT_ELIXIR)    ImageSize = sizeof(ImageElixir);
-  if (db[0].format == DVO_FORMAT_PANSTARRS) ImageSize = sizeof(ImagePanstarrs);
+  if (db[0].format == DVO_FORMAT_INTERNAL)  	  ImageSize = sizeof(Image);
+  if (db[0].format == DVO_FORMAT_LONEOS)    	  ImageSize = sizeof(ImageLoneos);
+  if (db[0].format == DVO_FORMAT_ELIXIR)    	  ImageSize = sizeof(ImageElixir);
+  if (db[0].format == DVO_FORMAT_PANSTARRS) 	  ImageSize = sizeof(ImagePanstarrs);
+  if (db[0].format == DVO_FORMAT_PANSTARRS_DEV_0) ImageSize = sizeof(ImagePanstarrs_DEV_0);
 
   /* check that filesize makes sense */
@@ -72,8 +69,9 @@
   db[0].ftable.header = &db[0].theader;
 
-  if (db[0].format == DVO_FORMAT_INTERNAL)  gfits_table_mkheader_Image (&db[0].theader);
-  if (db[0].format == DVO_FORMAT_LONEOS)    gfits_table_mkheader_ImageLoneos (&db[0].theader);
-  if (db[0].format == DVO_FORMAT_ELIXIR)    gfits_table_mkheader_ImageElixir (&db[0].theader);
-  if (db[0].format == DVO_FORMAT_PANSTARRS) gfits_table_mkheader_ImagePanstarrs (&db[0].theader);
+  if (db[0].format == DVO_FORMAT_INTERNAL)  	  gfits_table_mkheader_Image (&db[0].theader);
+  if (db[0].format == DVO_FORMAT_LONEOS)    	  gfits_table_mkheader_ImageLoneos (&db[0].theader);
+  if (db[0].format == DVO_FORMAT_ELIXIR)    	  gfits_table_mkheader_ImageElixir (&db[0].theader);
+  if (db[0].format == DVO_FORMAT_PANSTARRS) 	  gfits_table_mkheader_ImagePanstarrs (&db[0].theader);
+  if (db[0].format == DVO_FORMAT_PANSTARRS_DEV_0) gfits_table_mkheader_ImagePanstarrs_DEV_0 (&db[0].theader);
     
   /* read data from file */
