Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/Makefile
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/Makefile	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/Makefile	(revision 36898)
@@ -36,4 +36,5 @@
 $(DESTINC)/ps1_v3_defs.h \
 $(DESTINC)/ps1_v4_defs.h \
+$(DESTINC)/ps1_v5_defs.h \
 $(DESTINC)/ps1_ref_defs.h \
 $(DESTINC)/cmf-ps1-dv3.h
@@ -76,4 +77,5 @@
 $(SRC)/dvo_convert_PS1_V3.$(ARCH).o \
 $(SRC)/dvo_convert_PS1_V4.$(ARCH).o \
+$(SRC)/dvo_convert_PS1_V5.$(ARCH).o \
 $(SRC)/dvo_convert_PS1_REF.$(ARCH).o \
 $(SRC)/flatcorr_io.$(ARCH).o    \
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/doc/notes.ps1v5.txt
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/doc/notes.ps1v5.txt	(revision 36898)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/doc/notes.ps1v5.txt	(revision 36898)
@@ -0,0 +1,27 @@
+
+changes to make:
+
+Average: add: Rstk, Dstk, dRstk,dDstk, Nlensing, Nlensobj, lensingOffset, lensobjOffset, refColor
+Measure: mod: dR,dD -> R,D (change Measure_*_ToInteral to pass Average)
+      	 add: dMap, FluxAp, dFluxAp, (X,Y)off(KH,DCR,GAL)
+SecFilt: add: dMap, NusedKron, NusedAp, MpsfStk, MkronStk, MapStk, *Wrp
+      	 mod: Mstdev, M_20 (to Mmin,short:float),M_80 (to Mmax,short:float),
+         mod: FpsfStk, dFpsfStk, FkronStk, dFronStk (were FluxPSF, dFluxPSF, FluxKron, dFluxKron)
+
+name changes:
+Measure:
+dR,dD -> R,D (done)
+SecFilt
+    out[i].FpsfStk       = in[i].FluxPSF;
+    out[i].dFpsfStk      = in[i].dFluxPSF;
+    out[i].FkronStk      = in[i].FluxKron;
+    out[i].dFkronStk     = in[i].dFluxKron;
+    out[i].Mmin          = in[i].M_20*0.001;      
+    out[i].Mmax          = in[i].M_80*0.001;      
+
+    out[i].FluxPSF     	 = in[i].FpsfStk;
+    out[i].dFluxPSF    	 = in[i].dFpsfStk;
+    out[i].FluxKron    	 = in[i].FkronStk;
+    out[i].dFluxKron   	 = in[i].dFkronStk;
+    out[i].M_20        	 = in[i].Mmin*1000.0;      
+    out[i].M_80        	 = in[i].Mmax*1000.0;      
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/dvo.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/dvo.h	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/dvo.h	(revision 36898)
@@ -28,4 +28,5 @@
   DVO_FORMAT_PS1_V3,
   DVO_FORMAT_PS1_V4,
+  DVO_FORMAT_PS1_V5,
 } DVOTableFormat;
 
@@ -434,6 +435,6 @@
 // a reduced-subset structure for relphot & relastro
 typedef struct {
-  float          dR;
-  float          dD;
+  double         R;
+  double         D;
   float          M;
   float          Mcal;
@@ -548,5 +549,5 @@
 
 Measure_PS1_V4alt *gfits_table_get_Measure_PS1_V4alt (FTable *table, off_t *Ndata, char *swapped);
-Measure *Measure_PS1_V4alt_ToInternal (Measure_PS1_V4alt *in, off_t Nvalues);
+Measure *Measure_PS1_V4alt_ToInternal (Average *ave, Measure_PS1_V4alt *in, off_t Nvalues);
 
 /* a catalog contains this data */
@@ -696,6 +697,6 @@
 
 float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt);
-float PhotM20 (PhotCode *code, Average *average, SecFilt *secfilt);
-float PhotM80 (PhotCode *code, Average *average, SecFilt *secfilt);
+float PhotMmin (PhotCode *code, Average *average, SecFilt *secfilt);
+float PhotMmax (PhotCode *code, Average *average, SecFilt *secfilt);
 float PhotUCdist (PhotCode *code, Average *average, SecFilt *secfilt);
 unsigned int PhotStackID (PhotCode *code, Average *average, SecFilt *secfilt);
@@ -782,8 +783,8 @@
 /*** conversion functions / I/O conversions ***/
 Average *ReadRawAverage (FILE *f, off_t Naverage, char format, SecFilt **primary);
-Measure *ReadRawMeasure (FILE *f, off_t Nmeasure, char format);
+Measure *ReadRawMeasure (FILE *f, Average *average, off_t Nmeasure, char format);
 SecFilt *ReadRawSecFilt (FILE *f, off_t Nsecfilt, char format);
 int WriteRawAverage (FILE *f, Average *average, off_t Naverage, char format, SecFilt *primary);
-int WriteRawMeasure (FILE *f, Measure *measure, off_t Nmeasure, char format);
+int WriteRawMeasure (FILE *f, Average *average, Measure *measure, off_t Nmeasure, char format);
 int WriteRawSecFilt (FILE *f, SecFilt *secfilt, off_t Nsecfilt, char format);
 
@@ -791,10 +792,10 @@
 
 Average *FtableToAverage (FTable *ftable, off_t *Naverage, char *format, SecFilt **primary);
-Measure *FtableToMeasure (FTable *ftable, off_t *Nmeasure, char *format);
+Measure *FtableToMeasure (FTable *ftable, Average *average, off_t *Nmeasure, char *format);
 SecFilt *FtableToSecFilt (FTable *ftable, off_t *Nsecfilt, char *format);
 int      FtableToImage   (FTable *ftable, Header *theader, char *format);
 
 int AverageToFtable (FTable *ftable, Average *average, off_t Naverage, char format, SecFilt *primary);
-int MeasureToFtable (FTable *ftable, Measure *measure, off_t Nmeasure, char format);
+int MeasureToFtable (FTable *ftable, Average *average, Measure *measure, off_t Nmeasure, char format);
 int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, off_t Nsecfilt, char format);
 int ImageToFtable (FTable *ftable, Header *theader, char format);
@@ -812,4 +813,5 @@
 # include "ps1_v3_defs.h"
 # include "ps1_v4_defs.h"
+# include "ps1_v5_defs.h"
 # include "ps1_ref_defs.h"
 
@@ -906,4 +908,9 @@
 void TessellationTableInit (TessellationTable *tess, int Ntess);
 
+float dvoOffsetR (Measure *measure, Average *average);
+float dvoOffsetD (Measure *measure, Average *average);
+double dvoMeanR (float dR, Average *average);
+double dvoMeanD (float dD, Average *average);
+
 void dvo_average_init (Average *average);
 void dvo_averageT_init (AverageTiny *average);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/dvodb.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/dvodb.h	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/dvodb.h	(revision 36898)
@@ -58,6 +58,6 @@
       MAG_AVE_ERR, 
       MAG_CHISQ,
-      MAG_20, 
-      MAG_80, 
+      MAG_MIN, 
+      MAG_MAX, 
       MAG_FLUX_PSF,
       MAG_FLUX_PSF_ERR,
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/elixir_defs.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/elixir_defs.h	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/elixir_defs.h	(revision 36898)
@@ -3,6 +3,6 @@
 Average 	       	*Average_Elixir_ToInternal (Average_Elixir *in, off_t Nvalues, SecFilt **primary);
 Average_Elixir 	        *AverageInternalTo_Elixir (Average *in, off_t Nvalues, SecFilt *primary);
-Measure 	       	*Measure_Elixir_ToInternal (Measure_Elixir *in, off_t Nvalues);
-Measure_Elixir 	        *MeasureInternalTo_Elixir (Measure *in, off_t Nvalues);
+Measure 	       	*Measure_Elixir_ToInternal (Average *ave, Measure_Elixir *in, off_t Nvalues);
+Measure_Elixir 	        *MeasureInternalTo_Elixir (Average *ave, Measure *in, off_t Nvalues);
 SecFilt 	       	*SecFilt_Elixir_ToInternal (SecFilt_Elixir *in, off_t Nvalues);
 SecFilt_Elixir 	       	*SecFiltInternalTo_Elixir (SecFilt *in, off_t Nvalues);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/loneos_defs.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/loneos_defs.h	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/loneos_defs.h	(revision 36898)
@@ -3,6 +3,6 @@
 Average                	*Average_Loneos_ToInternal (Average_Loneos *in, off_t Nvalues, SecFilt **primary);
 Average_Loneos 	        *AverageInternalTo_Loneos (Average *in, off_t Nvalues, SecFilt *primary);
-Measure                	*Measure_Loneos_ToInternal (Measure_Loneos *in, off_t Nvalues);
-Measure_Loneos 	        *MeasureInternalTo_Loneos (Measure *in, off_t Nvalues);
+Measure                	*Measure_Loneos_ToInternal (Average *ave, Measure_Loneos *in, off_t Nvalues);
+Measure_Loneos 	        *MeasureInternalTo_Loneos (Average *ave, Measure *in, off_t Nvalues);
 SecFilt 	       	*SecFilt_Loneos_ToInternal (SecFilt_Loneos *in, off_t Nvalues);
 SecFilt_Loneos 	       	*SecFiltInternalTo_Loneos (SecFilt *in, off_t Nvalues);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/panstarrs_dev_0_defs.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/panstarrs_dev_0_defs.h	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/panstarrs_dev_0_defs.h	(revision 36898)
@@ -3,6 +3,6 @@
 Average 	       	*Average_Panstarrs_DEV_0_ToInternal (Average_Panstarrs_DEV_0 *in, off_t Nvalues, SecFilt **primary);
 Average_Panstarrs_DEV_0 *AverageInternalTo_Panstarrs_DEV_0 (Average *in, off_t Nvalues, SecFilt *primary);
-Measure 	       	*Measure_Panstarrs_DEV_0_ToInternal (Measure_Panstarrs_DEV_0 *in, off_t Nvalues);
-Measure_Panstarrs_DEV_0 *MeasureInternalTo_Panstarrs_DEV_0 (Measure *in, off_t Nvalues);
+Measure 	       	*Measure_Panstarrs_DEV_0_ToInternal (Average *ave, Measure_Panstarrs_DEV_0 *in, off_t Nvalues);
+Measure_Panstarrs_DEV_0 *MeasureInternalTo_Panstarrs_DEV_0 (Average *ave, Measure *in, off_t Nvalues);
 SecFilt 	       	*SecFilt_Panstarrs_DEV_0_ToInternal (SecFilt_Panstarrs_DEV_0 *in, off_t Nvalues);
 SecFilt_Panstarrs_DEV_0 *SecFiltInternalTo_Panstarrs_DEV_0 (SecFilt *in, off_t Nvalues);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/panstarrs_dev_1_defs.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/panstarrs_dev_1_defs.h	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/panstarrs_dev_1_defs.h	(revision 36898)
@@ -3,6 +3,6 @@
 Average 	       	*Average_Panstarrs_DEV_1_ToInternal (Average_Panstarrs_DEV_1 *in, off_t Nvalues, SecFilt **primary);
 Average_Panstarrs_DEV_1 *AverageInternalTo_Panstarrs_DEV_1 (Average *in, off_t Nvalues, SecFilt *primary);
-Measure 	       	*Measure_Panstarrs_DEV_1_ToInternal (Measure_Panstarrs_DEV_1 *in, off_t Nvalues);
-Measure_Panstarrs_DEV_1 *MeasureInternalTo_Panstarrs_DEV_1 (Measure *in, off_t Nvalues);
+Measure 	       	*Measure_Panstarrs_DEV_1_ToInternal (Average *ave, Measure_Panstarrs_DEV_1 *in, off_t Nvalues);
+Measure_Panstarrs_DEV_1 *MeasureInternalTo_Panstarrs_DEV_1 (Average *ave, Measure *in, off_t Nvalues);
 SecFilt 	       	*SecFilt_Panstarrs_DEV_1_ToInternal (SecFilt_Panstarrs_DEV_1 *in, off_t Nvalues);
 SecFilt_Panstarrs_DEV_1 *SecFiltInternalTo_Panstarrs_DEV_1 (SecFilt *in, off_t Nvalues);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_dev_1_defs.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_dev_1_defs.h	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_dev_1_defs.h	(revision 36898)
@@ -3,6 +3,6 @@
 Average 	       	*Average_PS1_DEV_1_ToInternal (Average_PS1_DEV_1 *in, off_t Nvalues, SecFilt **primary);
 Average_PS1_DEV_1       *AverageInternalTo_PS1_DEV_1 (Average *in, off_t Nvalues, SecFilt *primary);
-Measure 	       	*Measure_PS1_DEV_1_ToInternal (Measure_PS1_DEV_1 *in, off_t Nvalues);
-Measure_PS1_DEV_1       *MeasureInternalTo_PS1_DEV_1 (Measure *in, off_t Nvalues);
+Measure 	       	*Measure_PS1_DEV_1_ToInternal (Average *ave, Measure_PS1_DEV_1 *in, off_t Nvalues);
+Measure_PS1_DEV_1       *MeasureInternalTo_PS1_DEV_1 (Average *ave, Measure *in, off_t Nvalues);
 SecFilt 	       	*SecFilt_PS1_DEV_1_ToInternal (SecFilt_PS1_DEV_1 *in, off_t Nvalues);
 SecFilt_PS1_DEV_1       *SecFiltInternalTo_PS1_DEV_1 (SecFilt *in, off_t Nvalues);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_dev_2_defs.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_dev_2_defs.h	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_dev_2_defs.h	(revision 36898)
@@ -3,6 +3,6 @@
 Average 	       	*Average_PS1_DEV_2_ToInternal (Average_PS1_DEV_2 *in, off_t Nvalues, SecFilt **primary);
 Average_PS1_DEV_2       *AverageInternalTo_PS1_DEV_2 (Average *in, off_t Nvalues, SecFilt *primary);
-Measure 	       	*Measure_PS1_DEV_2_ToInternal (Measure_PS1_DEV_2 *in, off_t Nvalues);
-Measure_PS1_DEV_2       *MeasureInternalTo_PS1_DEV_2 (Measure *in, off_t Nvalues);
+Measure 	       	*Measure_PS1_DEV_2_ToInternal (Average *ave, Measure_PS1_DEV_2 *in, off_t Nvalues);
+Measure_PS1_DEV_2       *MeasureInternalTo_PS1_DEV_2 (Average *ave, Measure *in, off_t Nvalues);
 SecFilt 	       	*SecFilt_PS1_DEV_2_ToInternal (SecFilt_PS1_DEV_2 *in, off_t Nvalues);
 SecFilt_PS1_DEV_2       *SecFiltInternalTo_PS1_DEV_2 (SecFilt *in, off_t Nvalues);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_ref_defs.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_ref_defs.h	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_ref_defs.h	(revision 36898)
@@ -3,6 +3,6 @@
 Average 	       	*Average_PS1_REF_ToInternal (Average_PS1_REF *in, off_t Nvalues, SecFilt **primary);
 Average_PS1_REF          *AverageInternalTo_PS1_REF (Average *in, off_t Nvalues, SecFilt *primary);
-Measure 	       	*Measure_PS1_REF_ToInternal (Measure_PS1_REF *in, off_t Nvalues);
-Measure_PS1_REF          *MeasureInternalTo_PS1_REF (Measure *in, off_t Nvalues);
+Measure 	       	*Measure_PS1_REF_ToInternal (Average *ave, Measure_PS1_REF *in, off_t Nvalues);
+Measure_PS1_REF          *MeasureInternalTo_PS1_REF (Average *ave, Measure *in, off_t Nvalues);
 SecFilt 	       	*SecFilt_PS1_REF_ToInternal (SecFilt_PS1_REF *in, off_t Nvalues);
 SecFilt_PS1_REF          *SecFiltInternalTo_PS1_REF (SecFilt *in, off_t Nvalues);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v1_defs.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v1_defs.h	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v1_defs.h	(revision 36898)
@@ -3,6 +3,6 @@
 Average 	       	*Average_PS1_V1_ToInternal (Average_PS1_V1 *in, off_t Nvalues, SecFilt **primary);
 Average_PS1_V1          *AverageInternalTo_PS1_V1 (Average *in, off_t Nvalues, SecFilt *primary);
-Measure 	       	*Measure_PS1_V1_ToInternal (Measure_PS1_V1 *in, off_t Nvalues);
-Measure_PS1_V1          *MeasureInternalTo_PS1_V1 (Measure *in, off_t Nvalues);
+Measure 	       	*Measure_PS1_V1_ToInternal (Average *ave, Measure_PS1_V1 *in, off_t Nvalues);
+Measure_PS1_V1          *MeasureInternalTo_PS1_V1 (Average *ave, Measure *in, off_t Nvalues);
 SecFilt 	       	*SecFilt_PS1_V1_ToInternal (SecFilt_PS1_V1 *in, off_t Nvalues);
 SecFilt_PS1_V1          *SecFiltInternalTo_PS1_V1 (SecFilt *in, off_t Nvalues);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v2_defs.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v2_defs.h	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v2_defs.h	(revision 36898)
@@ -3,6 +3,6 @@
 Average 	       	*Average_PS1_V2_ToInternal (Average_PS1_V2 *in, off_t Nvalues, SecFilt **primary);
 Average_PS1_V2          *AverageInternalTo_PS1_V2 (Average *in, off_t Nvalues, SecFilt *primary);
-Measure 	       	*Measure_PS1_V2_ToInternal (Measure_PS1_V2 *in, off_t Nvalues);
-Measure_PS1_V2          *MeasureInternalTo_PS1_V2 (Measure *in, off_t Nvalues);
+Measure 	       	*Measure_PS1_V2_ToInternal (Average *ave, Measure_PS1_V2 *in, off_t Nvalues);
+Measure_PS1_V2          *MeasureInternalTo_PS1_V2 (Average *ave, Measure *in, off_t Nvalues);
 SecFilt 	       	*SecFilt_PS1_V2_ToInternal (SecFilt_PS1_V2 *in, off_t Nvalues);
 SecFilt_PS1_V2          *SecFiltInternalTo_PS1_V2 (SecFilt *in, off_t Nvalues);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v3_defs.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v3_defs.h	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v3_defs.h	(revision 36898)
@@ -3,6 +3,6 @@
 Average 	       	*Average_PS1_V3_ToInternal (Average_PS1_V3 *in, off_t Nvalues, SecFilt **primary);
 Average_PS1_V3          *AverageInternalTo_PS1_V3 (Average *in, off_t Nvalues, SecFilt *primary);
-Measure 	       	*Measure_PS1_V3_ToInternal (Measure_PS1_V3 *in, off_t Nvalues);
-Measure_PS1_V3          *MeasureInternalTo_PS1_V3 (Measure *in, off_t Nvalues);
+Measure 	       	*Measure_PS1_V3_ToInternal (Average *ave, Measure_PS1_V3 *in, off_t Nvalues);
+Measure_PS1_V3          *MeasureInternalTo_PS1_V3 (Average *ave, Measure *in, off_t Nvalues);
 SecFilt 	       	*SecFilt_PS1_V3_ToInternal (SecFilt_PS1_V3 *in, off_t Nvalues);
 SecFilt_PS1_V3          *SecFiltInternalTo_PS1_V3 (SecFilt *in, off_t Nvalues);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v4_defs.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v4_defs.h	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v4_defs.h	(revision 36898)
@@ -3,6 +3,6 @@
 Average 	       	*Average_PS1_V4_ToInternal (Average_PS1_V4 *in, off_t Nvalues, SecFilt **primary);
 Average_PS1_V4          *AverageInternalTo_PS1_V4 (Average *in, off_t Nvalues, SecFilt *primary);
-Measure 	       	*Measure_PS1_V4_ToInternal (Measure_PS1_V4 *in, off_t Nvalues);
-Measure_PS1_V4          *MeasureInternalTo_PS1_V4 (Measure *in, off_t Nvalues);
+Measure 	       	*Measure_PS1_V4_ToInternal (Average *ave, Measure_PS1_V4 *in, off_t Nvalues);
+Measure_PS1_V4          *MeasureInternalTo_PS1_V4 (Average *ave, Measure *in, off_t Nvalues);
 SecFilt 	       	*SecFilt_PS1_V4_ToInternal (SecFilt_PS1_V4 *in, off_t Nvalues);
 SecFilt_PS1_V4          *SecFiltInternalTo_PS1_V4 (SecFilt *in, off_t Nvalues);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v5_defs.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v5_defs.h	(revision 36898)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/ps1_v5_defs.h	(revision 36898)
@@ -0,0 +1,11 @@
+Image 		       	*Image_PS1_V5_ToInternal (Image_PS1_V5 *in, off_t Nvalues, off_t Nalloc);
+Image_PS1_V5    	*ImageInternalTo_PS1_V5 (Image *in, off_t Nvalues);
+Average 	       	*Average_PS1_V5_ToInternal (Average_PS1_V5 *in, off_t Nvalues, SecFilt **primary);
+Average_PS1_V5          *AverageInternalTo_PS1_V5 (Average *in, off_t Nvalues, SecFilt *primary);
+Measure 	       	*Measure_PS1_V5_ToInternal (Average *ave, Measure_PS1_V5 *in, off_t Nvalues);
+Measure_PS1_V5          *MeasureInternalTo_PS1_V5 (Average *ave, Measure *in, off_t Nvalues);
+SecFilt 	       	*SecFilt_PS1_V5_ToInternal (SecFilt_PS1_V5 *in, off_t Nvalues);
+SecFilt_PS1_V5          *SecFiltInternalTo_PS1_V5 (SecFilt *in, off_t Nvalues);
+
+PhotCode                *PhotCode_PS1_V5_To_Internal (PhotCode_PS1_V5 *in, off_t Nvalues);
+PhotCode_PS1_V5         *PhotCode_Internal_To_PS1_V5 (PhotCode *in, off_t Nvalues);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/LoadPhotcodesFITS.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/LoadPhotcodesFITS.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/LoadPhotcodesFITS.c	(revision 36898)
@@ -64,4 +64,5 @@
   CONVERT_FORMAT("DVO_PHOTCODE_PS1_V3",    PS1_V3);
   CONVERT_FORMAT("DVO_PHOTCODE_PS1_V4",    PS1_V4);
+  CONVERT_FORMAT("DVO_PHOTCODE_PS1_V5",    PS1_V5);
 
   table = GetPhotcodeTable ();
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/SavePhotcodesFITS.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/SavePhotcodesFITS.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/SavePhotcodesFITS.c	(revision 36898)
@@ -30,9 +30,9 @@
   // for the moment, we simply support the latest photcode format for output
   // XXX update this as needed as new formats are defined
-  PhotCode_PS1_V4 *photcode_output = PhotCode_Internal_To_PS1_V4 (table[0].code, table[0].Ncode);
+  PhotCode_PS1_V5 *photcode_output = PhotCode_Internal_To_PS1_V5 (table[0].code, table[0].Ncode);
 
   /* convert FITS format data to internal format (byteswaps & EXTNAME) */
   if (!gfits_db_create (&db)) return (FALSE);
-  if (!gfits_table_set_PhotCode_PS1_V4 (&db.ftable, photcode_output, table[0].Ncode)) return (FALSE);
+  if (!gfits_table_set_PhotCode_PS1_V5 (&db.ftable, photcode_output, table[0].Ncode)) return (FALSE);
   if (!gfits_db_save (&db)) return (FALSE);
   if (!gfits_db_close (&db)) return (FALSE);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbExtractAverages.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 36898)
@@ -268,9 +268,9 @@
 	  break;
 
-	case MAG_20:
-	  value.Flt = PhotM20 (field->photcode, average, secfilt);
-	  break;
-	case MAG_80:
-	  value.Flt = PhotM80 (field->photcode, average, secfilt);
+	case MAG_MIN:
+	  value.Flt = PhotMmin (field->photcode, average, secfilt);
+	  break;
+	case MAG_MAX:
+	  value.Flt = PhotMmax (field->photcode, average, secfilt);
 	  break;
 	case MAG_UC_DIST:
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbExtractMeasures.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 36898)
@@ -90,4 +90,5 @@
   dbValue value;
   double dT;
+  float dR, dD;
 
   Coords *mosaic, *fieldc;
@@ -150,4 +151,5 @@
 	  case MAG_AVE_ERR:
 	  case MAG_CHISQ:
+
 	  case MAG_FLUX_PSF:
 	  case MAG_FLUX_PSF_ERR:
@@ -159,6 +161,6 @@
 	  case MAG_FLUX_KRON_ERR:
 
-	  case MAG_20:
-	  case MAG_80:
+	  case MAG_MIN:
+	  case MAG_MAX:
 	  case MAG_UC_DIST:
 	  case MAG_STACK_DET_ID:
@@ -283,9 +285,9 @@
 	  value.Flt = PhotMstdev (equiv, average, secfilt);
 	  break;
-	case MAG_20:
-	  value.Flt = PhotM20 (equiv, average, secfilt);
-	  break;
-	case MAG_80:
-	  value.Flt = PhotM80 (equiv, average, secfilt);
+	case MAG_MIN:
+	  value.Flt = PhotMmin (equiv, average, secfilt);
+	  break;
+	case MAG_MAX:
+	  value.Flt = PhotMmax (equiv, average, secfilt);
 	  break;
 	case MAG_UC_DIST:
@@ -309,8 +311,8 @@
     }
     case MEAS_RA: /* OK */
-      value.Flt = average[0].R - measure[0].dR / 3600.0;
+      value.Flt = measure[0].R;
       break;
     case MEAS_DEC: /* OK */
-      value.Flt = average[0].D - measure[0].dD / 3600.0;
+      value.Flt = measure[0].D;
       break;
     case MEAS_RA_AVE: /* OK */
@@ -323,5 +325,5 @@
     case MEAS_GLON:
       if (!haveGalacticMeas) {
-	ApplyTransform (&GLON_MEAS, &GLAT_MEAS, average[0].R - measure[0].dR / 3600.0, average[0].D - measure[0].dD / 3600.0, celestial_to_galactic);
+	ApplyTransform (&GLON_MEAS, &GLAT_MEAS, measure[0].R, measure[0].D, celestial_to_galactic);
 	haveGalacticMeas = TRUE;
       }
@@ -330,5 +332,5 @@
     case MEAS_GLAT:
       if (!haveGalacticMeas) {
-	ApplyTransform (&GLON_MEAS, &GLAT_MEAS, average[0].R - measure[0].dR / 3600.0, average[0].D - measure[0].dD / 3600.0, celestial_to_galactic);
+	ApplyTransform (&GLON_MEAS, &GLAT_MEAS, measure[0].R, measure[0].D, celestial_to_galactic);
 	haveGalacticMeas = TRUE;
       }
@@ -337,5 +339,5 @@
     case MEAS_ELON:
       if (!haveEclipticMeas) {
-	ApplyTransform (&ELON_MEAS, &ELAT_MEAS, average[0].R - measure[0].dR / 3600.0, average[0].D - measure[0].dD / 3600.0, celestial_to_ecliptic);
+	ApplyTransform (&ELON_MEAS, &ELAT_MEAS, measure[0].R, measure[0].D, celestial_to_ecliptic);
 	haveEclipticMeas = TRUE;
       }
@@ -344,5 +346,5 @@
     case MEAS_ELAT:
       if (!haveEclipticMeas) {
-	ApplyTransform (&ELON_MEAS, &ELAT_MEAS, average[0].R - measure[0].dR / 3600.0, average[0].D - measure[0].dD / 3600.0, celestial_to_ecliptic);
+	ApplyTransform (&ELON_MEAS, &ELAT_MEAS, measure[0].R, measure[0].D, celestial_to_ecliptic);
 	haveEclipticMeas = TRUE;
       }
@@ -441,16 +443,18 @@
     // the error.
     case MEAS_RA_OFFSET: /* OK */
-      value.Flt = measure[0].dR;
+      value.Flt = dvoOffsetR (measure, average);
       break;
     case MEAS_DEC_OFFSET: /* OK */
-      value.Flt = measure[0].dD;
+      value.Flt = dvoOffsetD (measure, average);
       break;
     case MEAS_RA_FIT_OFFSET: /* OK */
       dT = (measure[0].t - average[0].Tmean) / (86400*365.25);
-      value.Flt = average[0].uR * dT + measure[0].dR;
+      dR = dvoOffsetR (measure, average);
+      value.Flt = average[0].uR * dT + dR;
       break;
     case MEAS_DEC_FIT_OFFSET: /* OK */
       dT = (measure[0].t - average[0].Tmean) / (86400*365.25);
-      value.Flt = average[0].uD * dT + measure[0].dD;
+      dD = dvoOffsetD (measure, average);
+      value.Flt = average[0].uD * dT + dD;
       break;
     case MEAS_RA_OFFSET_ERR: /* OK */
@@ -556,6 +560,6 @@
 	// measure.xccd if we need it
 	Image *image;
-	ra  = average[0].R - measure[0].dR / 3600.0;
-	dec = average[0].D - measure[0].dD / 3600.0;
+	ra  = measure[0].R;
+	dec = measure[0].D;
 	image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
 	if (image == NULL) break;
@@ -571,6 +575,6 @@
       {
 	Image *image;
-	ra  = average[0].R - measure[0].dR / 3600.0;
-	dec = average[0].D - measure[0].dD / 3600.0;
+	ra  = measure[0].R;
+	dec = measure[0].D;
 	image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
 	if (image == NULL) break;
@@ -607,6 +611,6 @@
 	}
 	if (fieldc == NULL) break;
-	double Rm = average[0].R - measure[0].dR / 3600.0;
-	double Dm = average[0].D - measure[0].dD / 3600.0;
+	double Rm = measure[0].R;
+	double Dm = measure[0].D;
 	RD_to_XY (&XFIELD_MEAS, &YFIELD_MEAS, Rm, Dm, fieldc);
       }
@@ -624,6 +628,6 @@
 	}
 	if (fieldc == NULL) break;
-	double Rm = average[0].R - measure[0].dR / 3600.0;
-	double Dm = average[0].D - measure[0].dD / 3600.0;
+	double Rm = measure[0].R;
+	double Dm = measure[0].D;
 	RD_to_XY (&XFIELD_MEAS, &YFIELD_MEAS, Rm, Dm, fieldc);
       }
@@ -642,6 +646,6 @@
 	}
 	if (mosaic == NULL) break;
-	double Rm = average[0].R - measure[0].dR / 3600.0;
-	double Dm = average[0].D - measure[0].dD / 3600.0;
+	double Rm = measure[0].R;
+	double Dm = measure[0].D;
 	RD_to_XY (&XMOS_MEAS, &YMOS_MEAS, Rm, Dm, mosaic);
       }
@@ -659,6 +663,6 @@
 	}
 	if (mosaic == NULL) break;
-	double Rm = average[0].R - measure[0].dR / 3600.0;
-	double Dm = average[0].D - measure[0].dD / 3600.0;
+	double Rm = measure[0].R;
+	double Dm = measure[0].D;
 	RD_to_XY (&XMOS_MEAS, &YMOS_MEAS, Rm, Dm, mosaic);
       }
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbFields.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbFields.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbFields.c	(revision 36898)
@@ -85,6 +85,6 @@
   if (!strcasecmp (string, "nphot"))       return (MAG_NPHOT);
   if (!strcasecmp (string, "stdev"))       return (MAG_STDEV);
-  if (!strcasecmp (string, "20"))          return (MAG_20);
-  if (!strcasecmp (string, "80"))          return (MAG_80);
+  if (!strcasecmp (string, "min"))         return (MAG_MIN);
+  if (!strcasecmp (string, "max"))         return (MAG_MAX);
   if (!strcasecmp (string, "ucdist"))      return (MAG_UC_DIST);
   if (!strcasecmp (string, "stackDetectID")) return (MAG_STACK_DET_ID);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog.c	(revision 36898)
@@ -56,4 +56,5 @@
   if (!strcasecmp (catformat, "PS1_V3"))          return (DVO_FORMAT_PS1_V3);
   if (!strcasecmp (catformat, "PS1_V4"))          return (DVO_FORMAT_PS1_V4);
+  if (!strcasecmp (catformat, "PS1_V5"))          return (DVO_FORMAT_PS1_V5);
   if (!strcasecmp (catformat, "PS1_REF"))         return (DVO_FORMAT_PS1_REF);
   return (DVO_FORMAT_UNDEF);
@@ -69,17 +70,46 @@
 }
 
+float dvoOffsetR (Measure *measure, Average *average) {
+
+  float dR = (measure[0].R - average[0].R) * 3600.0;
+  return dR;
+}
+
+float dvoOffsetD (Measure *measure, Average *average) {
+
+  float dD = (measure[0].D - average[0].D) * 3600.0;
+  return dD;
+}
+
+double dvoMeanR (float dR, Average *average) {
+
+  double ra = average[0].R - dR / 3600.0;
+  return ra;
+}
+
+double dvoMeanD (float dD, Average *average) {
+
+  double dec = average[0].D - dD / 3600.0;
+  return dec;
+}
+
 // init all data, or just catalog data
 void dvo_average_init (Average *average) {
   average->R         	   = 0;
   average->D         	   = 0;
-  average->dR        	   = 0;
-  average->dD        	   = 0;
+  average->dR        	   = NAN;
+  average->dD        	   = NAN;
 
   average->uR        	   = 0;
   average->uD        	   = 0;
-  average->duR       	   = 0;
-  average->duD       	   = 0;
+  average->duR       	   = NAN;
+  average->duD       	   = NAN;
   average->P         	   = 0;
-  average->dP        	   = 0;
+  average->dP        	   = NAN;
+
+  average->Rstk        	   = NAN;
+  average->Dstk        	   = NAN;
+  average->dRstk       	   = NAN;
+  average->dDstk       	   = NAN;
 
   average->ChiSqAve  	   = NAN;
@@ -97,7 +127,14 @@
   average->Nmeasure        = 0;
   average->Nmissing        = 0;
+  average->Nlensing        = 0;
+  average->Nlensobj        = 0;
   average->Nextend         = 0;
+
   average->measureOffset   = -1;
   average->missingOffset   = -1;
+  average->lensingOffset   = -1;
+  average->lensobjOffset   = -1;
+  average->extendOffset    = -1;
+
   average->refColor        = NAN;
 
@@ -109,4 +146,5 @@
   average->catID     	   = 0;
   average->extID     	   = 0;
+  average->extIDgc    	   = 0;
 }
 
@@ -125,37 +163,70 @@
 void dvo_secfilt_init (SecFilt *secfilt) {
   secfilt->M           = NAN;
+  secfilt->dM          = NAN;
   secfilt->Map         = NAN;
+  secfilt->dMap        = NAN;
   secfilt->Mkron       = NAN;
   secfilt->dMkron      = NAN;
-  secfilt->dM          = NAN;
-  secfilt->Xm          = NAN_S_SHORT;
-
-  secfilt->FluxPSF     = NAN;
-  secfilt->dFluxPSF    = NAN;
-  secfilt->FluxKron    = NAN;
-  secfilt->dFluxKron   = NAN;
-
-  secfilt->flags       = 0;
+
+  secfilt->Mstdev      = NAN;
+  secfilt->Mmin        = NAN;
+  secfilt->Mmax        = NAN;
+  secfilt->Xm          = NAN;
+
   secfilt->Ncode       = 0;
   secfilt->Nused       = 0;
-
-  secfilt->M_20        = NAN_S_SHORT;
-  secfilt->M_80        = NAN_S_SHORT;
+  secfilt->NusedKron   = 0;
+  secfilt->NusedAp     = 0;
+
+  secfilt->flags       = 0;
+
+  secfilt->MpsfStk     = NAN;
+  secfilt->FpsfStk     = NAN;
+  secfilt->dFpsfStk    = NAN;
+
+  secfilt->MkronStk    = NAN;
+  secfilt->FkronStk    = NAN;
+  secfilt->dFkronStk   = NAN;
+
+  secfilt->MapStk      = NAN;
+  secfilt->FapStk      = NAN;
+  secfilt->dFapStk     = NAN;
+
+  secfilt->stackDetectID = 0;
+
+  secfilt->MpsfWrp     = NAN;
+  secfilt->FpsfWrp     = NAN;
+  secfilt->dFpsfWrp    = NAN;
+  secfilt->sFpsfWrp    = NAN;
+
+  secfilt->MkronWrp    = NAN;
+  secfilt->FkronWrp    = NAN;
+  secfilt->dFkronWrp   = NAN;
+  secfilt->sFkronWrp   = NAN;
+
+  secfilt->MapWrp      = NAN;
+  secfilt->FapWrp      = NAN;
+  secfilt->dFapWrp     = NAN;
+  secfilt->sFapWrp     = NAN;
+
+  secfilt->NusedWrp     = 0;
+  secfilt->NusedKronWrp = 0;
+  secfilt->NusedApWrp   = 0;
 
   secfilt->ubercalDist = 1000;
-  secfilt->Mstdev      = NAN_S_SHORT;
-  secfilt->stackDetectID     = 0;
 }
 
 // init all data, or just catalog data
 void dvo_measure_init (Measure *measure) {
+ measure->R         = NAN;
+ measure->D         = NAN;
+
  measure->M         = NAN;
- measure->dR        = NAN;
- measure->dD        = NAN;
- measure->Mcal      = NAN;
+ measure->dM        = NAN;
  measure->Map       = NAN;
+ measure->dMap      = NAN;
  measure->Mkron     = NAN;
  measure->dMkron    = NAN;
- measure->dM        = NAN;
+ measure->Mcal      = NAN;
  measure->dMcal     = NAN;
  measure->dt        = NAN;
@@ -165,4 +236,6 @@
  measure->FluxKron  = NAN;
  measure->dFluxKron = NAN;
+ measure->FluxAp    = NAN;
+ measure->dFluxAp   = NAN;
 
  measure->airmass   = NAN;
@@ -174,20 +247,29 @@
  measure->Yfix      = NAN;
 
+ measure->XoffKH    = NAN;
+ measure->YoffKH    = NAN;
+ measure->XoffDCR   = NAN;
+ measure->YoffDCR   = NAN;
+ measure->XoffGAL   = NAN;
+ measure->YoffGAL   = NAN;
+
  measure->Sky       = NAN;
  measure->dSky      = NAN;
 
  measure->t         = 0;
- measure->t_msec    = 0;
  measure->averef    = 0;
 
  measure->detID     = 0;
- measure->imageID   = 0;
  measure->objID     = 0;
  measure->catID     = 0;
+
  measure->extID     = 0;
+
+ measure->imageID   = 0;
 
  measure->psfQF     = NAN;
  measure->psfQFperf = NAN;
  measure->psfChisq  = NAN;
+
  measure->psfNdof   = 0;
  measure->psfNpix   = 0;
@@ -203,4 +285,7 @@
  measure->Myy       = 0;
 
+ measure->t_msec    = 0;
+ measure->photcode  = 0;
+
  measure->dXccd     = 0;
  measure->dYccd     = 0;
@@ -210,5 +295,4 @@
  measure->pltscale  = NAN;
 
- measure->photcode  = 0;
  measure->dbFlags   = 0;
  measure->photFlags = 0;
@@ -216,6 +300,6 @@
 
 void dvo_measureT_init (MeasureTiny *measure) {
- measure->dR        = NAN;
- measure->dD        = NAN;
+ measure->R         = NAN;
+ measure->D         = NAN;
  measure->M         = NAN;
  measure->Mcal      = NAN;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog_chipcoords.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog_chipcoords.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog_chipcoords.c	(revision 36898)
@@ -56,6 +56,6 @@
     m = average[i].measureOffset;
     for (j = 0; j < average[i].Nmeasure; j++, m++) {
-      ra  = average[i].R - measure[m].dR / 3600.0;
-      dec = average[i].D - measure[m].dD / 3600.0;
+      ra  = measure[m].R;
+      dec = measure[m].D;
       N = dvo_match_image (image, Nimage, measure[m].t, measure[m].photcode);
       if (N == -1) continue;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog_mef.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog_mef.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog_mef.c	(revision 36898)
@@ -101,5 +101,5 @@
       return (FALSE);
     }
-    catalog[0].measure = FtableToMeasure (&ftable, &catalog[0].Nmeasure, &catalog[0].catformat);
+    catalog[0].measure = FtableToMeasure (&ftable, catalog[0].average, &catalog[0].Nmeasure, &catalog[0].catformat);
     if (Nmeasure != catalog[0].Nmeas_disk) {
       fprintf (stderr, "Warning: mismatch between Nmeasure in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n",  Nmeasure,  catalog[0].Nmeas_disk);
@@ -289,5 +289,5 @@
 
   /* write out Measure table (convert to FITS table format) */
-  MeasureToFtable (&ftable, catalog[0].measure, catalog[0].Nmeasure, catalog[0].catformat);
+  MeasureToFtable (&ftable, catalog[0].average, catalog[0].measure, catalog[0].Nmeasure, catalog[0].catformat);
   if (!gfits_fwrite_Theader (catalog[0].f, &header)) {
     fprintf (stderr, "can't write table header");
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog_raw.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog_raw.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog_raw.c	(revision 36898)
@@ -90,4 +90,5 @@
       FORMAT_CASE (PS1_V3,    PS1_V3);
       FORMAT_CASE (PS1_V4,    PS1_V4);
+      FORMAT_CASE (PS1_V5,    PS1_V5);
       FORMAT_CASE (PS1_REF,   PS1_REF);
 
@@ -144,5 +145,5 @@
   /* read and convert the measures (use a macro to clean this up?) */
   if (catalog[0].catflags & LOAD_MEAS) {
-    catalog[0].measure = ReadRawMeasure (catalog[0].f, catalog[0].Nmeasure, catalog[0].catformat);
+    catalog[0].measure = ReadRawMeasure (catalog[0].f, catalog[0].average, catalog[0].Nmeasure, catalog[0].catformat);
   } else {
     /* skip over measures */
@@ -284,4 +285,5 @@
   if (catalog[0].catformat == DVO_FORMAT_PS1_V3)          gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PS1_V3");
   if (catalog[0].catformat == DVO_FORMAT_PS1_V4)          gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PS1_V4");
+  if (catalog[0].catformat == DVO_FORMAT_PS1_V5)          gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PS1_V5");
   if (catalog[0].catformat == DVO_FORMAT_PS1_REF)         gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PS1_REF");
 
@@ -303,5 +305,5 @@
   /* write averages and measures */
   WriteRawAverage (f, catalog[0].average, catalog[0].Naverage, catalog[0].catformat, primary);
-  WriteRawMeasure (f, catalog[0].measure, catalog[0].Nmeasure, catalog[0].catformat);
+  WriteRawMeasure (f, catalog[0].average, catalog[0].measure, catalog[0].Nmeasure, catalog[0].catformat);
 
   /* write missing data */
@@ -387,4 +389,5 @@
       FORMAT_CASE (PS1_V3,    PS1_V3);
       FORMAT_CASE (PS1_V4,    PS1_V4);
+      FORMAT_CASE (PS1_V5,    PS1_V5);
       FORMAT_CASE (PS1_REF,   PS1_REF);
 
@@ -438,4 +441,5 @@
       FORMAT_CASE (PS1_V3,    PS1_V3);
       FORMAT_CASE (PS1_V4,    PS1_V4);
+      FORMAT_CASE (PS1_V5,    PS1_V5);
       FORMAT_CASE (PS1_REF,   PS1_REF);
 
@@ -451,5 +455,5 @@
 /** Average / Raw Table conversions **/
 
-Measure *ReadRawMeasure (FILE *f, off_t Nmeasure, char format) {
+Measure *ReadRawMeasure (FILE *f, Average *average, off_t Nmeasure, char format) {
 
   Measure *measure;
@@ -467,5 +471,5 @@
       } \
       gfits_convert_Measure_##TYPE (tmpMeasure, sizeof(Measure_##TYPE), Nmeasure); \
-      measure = Measure_##TYPE##_ToInternal (tmpMeasure, Nmeasure); \
+      measure = Measure_##TYPE##_ToInternal (average, tmpMeasure, Nmeasure); \
       free (tmpMeasure); \
       break; }
@@ -481,4 +485,55 @@
       }
       gfits_convert_Measure (measure, sizeof(Measure), Nmeasure);
+      break; }
+
+      FORMAT_CASE (LONEOS, Loneos);
+      FORMAT_CASE (ELIXIR, Elixir);
+      FORMAT_CASE (PANSTARRS_DEV_0, Panstarrs_DEV_0);
+      FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1);
+      FORMAT_CASE (PS1_DEV_1, PS1_DEV_1);
+      FORMAT_CASE (PS1_DEV_2, PS1_DEV_2);
+      FORMAT_CASE (PS1_V1,    PS1_V1);
+      FORMAT_CASE (PS1_V2,    PS1_V2);
+      FORMAT_CASE (PS1_V3,    PS1_V3);
+      FORMAT_CASE (PS1_V5,    PS1_V5);
+      FORMAT_CASE (PS1_REF,   PS1_REF);
+
+    default:
+      fprintf (stderr, "error reading measures\n");
+      return (NULL);
+  }
+# undef FORMAT_CASE
+
+  return (measure);
+}
+
+/* accepts and converts internal measure formats and outputs 
+   raw data in the specified format */
+int WriteRawMeasure (FILE *f, Average *average, Measure *measure, off_t Nmeasure, char format) {
+
+// this macro generates the case statements for each type
+# define FORMAT_CASE(NAME,TYPE) \
+    case DVO_FORMAT_##NAME: { \
+      off_t nitems; \
+      Measure_##TYPE *tmpMeasure; \
+      tmpMeasure = MeasureInternalTo_##TYPE (average, measure, Nmeasure); \
+      gfits_convert_Measure_##TYPE (tmpMeasure, sizeof(Measure_##TYPE), Nmeasure); \
+      nitems = fwrite (tmpMeasure, sizeof(Measure_##TYPE), Nmeasure, f); \
+      free (tmpMeasure); \
+      if (nitems != Nmeasure) { \
+	fprintf (stderr, "failed to write measures ("OFF_T_FMT" vs "OFF_T_FMT")\n",  nitems,  Nmeasure); \
+	return (FALSE); \
+      } \
+      break; }
+
+  switch (format) {
+    case DVO_FORMAT_INTERNAL: {
+      off_t nitems;
+      gfits_convert_Measure (measure, sizeof(Measure), Nmeasure);
+      nitems = fwrite (measure, sizeof(Measure), Nmeasure, f);
+      if (nitems != Nmeasure) {
+	fprintf (stderr, "failed to write measures ("OFF_T_FMT" vs "OFF_T_FMT")\n",  nitems,  Nmeasure);
+	return (FALSE);
+      }
       break; }
 
@@ -493,55 +548,5 @@
       FORMAT_CASE (PS1_V3,    PS1_V3);
       FORMAT_CASE (PS1_V4,    PS1_V4);
-      FORMAT_CASE (PS1_REF,   PS1_REF);
-
-    default:
-      fprintf (stderr, "error reading measures\n");
-      return (NULL);
-  }
-# undef FORMAT_CASE
-
-  return (measure);
-}
-
-/* accepts and converts internal measure formats and outputs 
-   raw data in the specified format */
-int WriteRawMeasure (FILE *f, Measure *measure, off_t Nmeasure, char format) {
-
-// this macro generates the case statements for each type
-# define FORMAT_CASE(NAME,TYPE) \
-    case DVO_FORMAT_##NAME: { \
-      off_t nitems; \
-      Measure_##TYPE *tmpMeasure; \
-      tmpMeasure = MeasureInternalTo_##TYPE (measure, Nmeasure); \
-      gfits_convert_Measure_##TYPE (tmpMeasure, sizeof(Measure_##TYPE), Nmeasure); \
-      nitems = fwrite (tmpMeasure, sizeof(Measure_##TYPE), Nmeasure, f); \
-      free (tmpMeasure); \
-      if (nitems != Nmeasure) { \
-	fprintf (stderr, "failed to write measures ("OFF_T_FMT" vs "OFF_T_FMT")\n",  nitems,  Nmeasure); \
-	return (FALSE); \
-      } \
-      break; }
-
-  switch (format) {
-    case DVO_FORMAT_INTERNAL: {
-      off_t nitems;
-      gfits_convert_Measure (measure, sizeof(Measure), Nmeasure);
-      nitems = fwrite (measure, sizeof(Measure), Nmeasure, f);
-      if (nitems != Nmeasure) {
-	fprintf (stderr, "failed to write measures ("OFF_T_FMT" vs "OFF_T_FMT")\n",  nitems,  Nmeasure);
-	return (FALSE);
-      }
-      break; }
-
-      FORMAT_CASE (LONEOS, Loneos);
-      FORMAT_CASE (ELIXIR, Elixir);
-      FORMAT_CASE (PANSTARRS_DEV_0, Panstarrs_DEV_0);
-      FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1);
-      FORMAT_CASE (PS1_DEV_1, PS1_DEV_1);
-      FORMAT_CASE (PS1_DEV_2, PS1_DEV_2);
-      FORMAT_CASE (PS1_V1,    PS1_V1);
-      FORMAT_CASE (PS1_V2,    PS1_V2);
-      FORMAT_CASE (PS1_V3,    PS1_V3);
-      FORMAT_CASE (PS1_V4,    PS1_V4);
+      FORMAT_CASE (PS1_V5,    PS1_V5);
       FORMAT_CASE (PS1_REF,   PS1_REF);
 
@@ -599,4 +604,5 @@
       FORMAT_CASE (PS1_V3,    PS1_V3);
       FORMAT_CASE (PS1_V4,    PS1_V4);
+      FORMAT_CASE (PS1_V5,    PS1_V5);
       FORMAT_CASE (PS1_REF,   PS1_REF);
 
@@ -650,4 +656,5 @@
       FORMAT_CASE (PS1_V3,    PS1_V3);
       FORMAT_CASE (PS1_V4,    PS1_V4);
+      FORMAT_CASE (PS1_V5,    PS1_V5);
       FORMAT_CASE (PS1_REF,   PS1_REF);
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog_split.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog_split.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_catalog_split.c	(revision 36898)
@@ -277,5 +277,5 @@
     }
     /* convert data format to internal : returns number of row read in Nmeasure */
-    catalog[0].measure = FtableToMeasure (&ftable, &Nmeasure, &catalog[0].catformat);
+    catalog[0].measure = FtableToMeasure (&ftable, catalog[0].average, &Nmeasure, &catalog[0].catformat);
     if (Nmeasure != catalog[0].Nmeas_disk) {
       fprintf (stderr, "Warning: mismatch between Nmeasure in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n",  Nmeasure,  catalog[0].Nmeas_disk);
@@ -476,5 +476,5 @@
 
     /* convert data format to internal : returns number of row read in Nmeasure */
-    catalog[0].measure = FtableToMeasure (&ftable, &Nmeasure, &catalog[0].catformat);
+    catalog[0].measure = FtableToMeasure (&ftable, catalog[0].average, &Nmeasure, &catalog[0].catformat);
     if (Nmeasure != Nrows) {
       // XXX this condition denotes the eof has been reached; not an error or a warning
@@ -621,6 +621,6 @@
     assert (catalog[0].Nmeas_disk >= catalog[0].Nmeas_off);
 
-    // convert to external table format
-    if (!MeasureToFtable (&ftable, &catalog[0].measure[first], Nrows, catalog[0].catformat)) {
+    // convert to external table format (note that the block above does not damage or free catalog.average) 
+    if (!MeasureToFtable (&ftable, catalog[0].average, &catalog[0].measure[first], Nrows, catalog[0].catformat)) {
       fprintf (stderr, "trouble converting format\n");
       goto failure;
@@ -821,5 +821,5 @@
 
     // convert to external table format
-    if (!MeasureToFtable (&ftable, &catalog[0].measure[first], Nrows, catalog[0].catformat)) {
+    if (!MeasureToFtable (&ftable, catalog[0].average, &catalog[0].measure[first], Nrows, catalog[0].catformat)) {
       fprintf (stderr, "trouble converting format\n");
       goto failure;
@@ -1000,5 +1000,6 @@
 
     // convert to external table format
-    if (!MeasureToFtable (&ftable, &catalog[0].measure[first], Nrows, catalog[0].catformat)) {
+    // XXX does catalog.measure have averef correctly set up?
+    if (!MeasureToFtable (&ftable, catalog[0].average, &catalog[0].measure[first], Nrows, catalog[0].catformat)) {
       fprintf (stderr, "trouble converting format\n");
       goto failure;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert.c	(revision 36898)
@@ -41,4 +41,5 @@
   CONVERT_FORMAT ("DVO_AVERAGE_PS1_V3",          PS1_V3);
   CONVERT_FORMAT ("DVO_AVERAGE_PS1_V4",          PS1_V4);
+  CONVERT_FORMAT ("DVO_AVERAGE_PS1_V5",          PS1_V5);
   CONVERT_FORMAT ("DVO_AVERAGE_PS1_REF",         PS1_REF);
 # undef CONVERT_FORMAT
@@ -112,4 +113,5 @@
   CONVERT_FORMAT ("DVO_AVERAGE_PS1_V3",          PS1_V3,          PS1_V3);
   CONVERT_FORMAT ("DVO_AVERAGE_PS1_V4",          PS1_V4,          PS1_V4);
+  CONVERT_FORMAT ("DVO_AVERAGE_PS1_V5",          PS1_V5,          PS1_V5);
   CONVERT_FORMAT ("DVO_AVERAGE_PS1_REF",         PS1_REF,         PS1_REF);
 # undef CONVERT_FORMAT
@@ -147,4 +149,5 @@
       FORMAT_CASE (PS1_V3,          PS1_V3);
       FORMAT_CASE (PS1_V4,          PS1_V4);
+      FORMAT_CASE (PS1_V5,          PS1_V5);
       FORMAT_CASE (PS1_REF,         PS1_REF);
 # undef FORMAT_CASE
@@ -159,5 +162,6 @@
 /*** Measure / FTable conversion functions ***/
 
-Measure *FtableToMeasure (FTable *ftable, off_t *Nmeasure, char *format) {
+// FtableToMeasure needs the Average since old formats stored measure.dR,dD only
+Measure *FtableToMeasure (FTable *ftable, Average *average, off_t *Nmeasure, char *format) {
 
   Measure *measure;
@@ -179,5 +183,6 @@
       exit (2);
     }
-    measure = Measure_PS1_V4alt_ToInternal (tmpMeasure, *Nmeasure);
+    myAssert (average, "conversion to internal needs average table");
+    measure = Measure_PS1_V4alt_ToInternal (average, tmpMeasure, *Nmeasure);
     free (tmpMeasure);
     *format = DVO_FORMAT_PS1_V4;
@@ -185,15 +190,16 @@
   }
 
-# define CONVERT_FORMAT(NAME, FORMAT, TYPE) \
-  if (!strcmp (extname, NAME)) { \
-    Measure_##TYPE *tmpMeasure; \
+# define CONVERT_FORMAT(NAME, FORMAT, TYPE, ABS_COORDS)		\
+  if (!strcmp (extname, NAME)) {					\
+    Measure_##TYPE *tmpMeasure;						\
     tmpMeasure = gfits_table_get_Measure_##TYPE (ftable, Nmeasure, NULL); \
-    if (!tmpMeasure) { \
-      fprintf (stderr, "ERROR: failed to read measures\n"); \
-      exit (2); \
-    } \
-    measure = Measure_##TYPE##_ToInternal (tmpMeasure, *Nmeasure); \
-    free (tmpMeasure); \
-    *format = DVO_FORMAT_##FORMAT; \
+    if (!tmpMeasure) {							\
+      fprintf (stderr, "ERROR: failed to read measures\n");		\
+      exit (2);								\
+    }									\
+    myAssert (ABS_COORDS || average, "conversion to internal needs average table"); \
+    measure = Measure_##TYPE##_ToInternal (average, tmpMeasure, *Nmeasure); \
+    free (tmpMeasure);							\
+    *format = DVO_FORMAT_##FORMAT;					\
     return (measure); }
 
@@ -208,15 +214,16 @@
   }
 
-  CONVERT_FORMAT ("DVO_MEASURE_ELIXIR", 	 ELIXIR, 	  Elixir);
-  CONVERT_FORMAT ("DVO_MEASURE_LONEOS", 	 LONEOS,          Loneos);
-  CONVERT_FORMAT ("DVO_MEASURE_PANSTARRS_DEV_0", PANSTARRS_DEV_0, Panstarrs_DEV_0);
-  CONVERT_FORMAT ("DVO_MEASURE_PANSTARRS_DEV_1", PANSTARRS_DEV_1, Panstarrs_DEV_1);
-  CONVERT_FORMAT ("DVO_MEASURE_PS1_DEV_1",       PS1_DEV_1,       PS1_DEV_1);
-  CONVERT_FORMAT ("DVO_MEASURE_PS1_DEV_2",       PS1_DEV_2,       PS1_DEV_2);
-  CONVERT_FORMAT ("DVO_MEASURE_PS1_V1",          PS1_V1,          PS1_V1);
-  CONVERT_FORMAT ("DVO_MEASURE_PS1_V2",          PS1_V2,          PS1_V2);
-  CONVERT_FORMAT ("DVO_MEASURE_PS1_V3",          PS1_V3,          PS1_V3);
-  CONVERT_FORMAT ("DVO_MEASURE_PS1_V4",          PS1_V4,          PS1_V4);
-  CONVERT_FORMAT ("DVO_MEASURE_PS1_REF",         PS1_REF,         PS1_REF);
+  CONVERT_FORMAT ("DVO_MEASURE_ELIXIR", 	 ELIXIR, 	  Elixir,          FALSE);
+  CONVERT_FORMAT ("DVO_MEASURE_LONEOS", 	 LONEOS,          Loneos,          FALSE);
+  CONVERT_FORMAT ("DVO_MEASURE_PANSTARRS_DEV_0", PANSTARRS_DEV_0, Panstarrs_DEV_0, FALSE);
+  CONVERT_FORMAT ("DVO_MEASURE_PANSTARRS_DEV_1", PANSTARRS_DEV_1, Panstarrs_DEV_1, FALSE);
+  CONVERT_FORMAT ("DVO_MEASURE_PS1_DEV_1",       PS1_DEV_1,       PS1_DEV_1,       FALSE);
+  CONVERT_FORMAT ("DVO_MEASURE_PS1_DEV_2",       PS1_DEV_2,       PS1_DEV_2,       FALSE);
+  CONVERT_FORMAT ("DVO_MEASURE_PS1_V1",          PS1_V1,          PS1_V1,          FALSE);
+  CONVERT_FORMAT ("DVO_MEASURE_PS1_V2",          PS1_V2,          PS1_V2,          FALSE);
+  CONVERT_FORMAT ("DVO_MEASURE_PS1_V3",          PS1_V3,          PS1_V3,          FALSE);
+  CONVERT_FORMAT ("DVO_MEASURE_PS1_V4",          PS1_V4,          PS1_V4,          FALSE);
+  CONVERT_FORMAT ("DVO_MEASURE_PS1_V5",          PS1_V5,          PS1_V5,          TRUE);
+  CONVERT_FORMAT ("DVO_MEASURE_PS1_REF",         PS1_REF,         PS1_REF,         FALSE);
 # undef CONVERT_FORMAT
 
@@ -227,10 +234,12 @@
 }
 
-int MeasureToFtable (FTable *ftable, Measure *measure, off_t Nmeasure, char format) {
-
-# define FORMAT_CASE(FORMAT, TYPE) \
+// MeasureToFtable needs the Average since old formats stored measure.dR,dD only
+int MeasureToFtable (FTable *ftable, Average *average, Measure *measure, off_t Nmeasure, char format) {
+
+# define FORMAT_CASE(FORMAT, TYPE, ABS_COORDS)		\
     case DVO_FORMAT_##FORMAT: { \
       Measure_##TYPE *tmpMeasure; \
-      tmpMeasure = MeasureInternalTo_##TYPE (measure, Nmeasure); \
+      myAssert (ABS_COORDS || average, "conversion to internal needs average table"); \
+      tmpMeasure = MeasureInternalTo_##TYPE (average, measure, Nmeasure); \
       gfits_table_set_Measure_##TYPE (ftable, tmpMeasure, Nmeasure); \
       free (tmpMeasure); \
@@ -243,15 +252,16 @@
       break; }
 
-      FORMAT_CASE (ELIXIR, 	    Elixir);
-      FORMAT_CASE (LONEOS, 	    Loneos);
-      FORMAT_CASE (PANSTARRS_DEV_0, Panstarrs_DEV_0);
-      FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1);
-      FORMAT_CASE (PS1_DEV_1,       PS1_DEV_1);
-      FORMAT_CASE (PS1_DEV_2,       PS1_DEV_2);
-      FORMAT_CASE (PS1_V1,          PS1_V1);
-      FORMAT_CASE (PS1_V2,          PS1_V2);
-      FORMAT_CASE (PS1_V3,          PS1_V3);
-      FORMAT_CASE (PS1_V4,          PS1_V4);
-      FORMAT_CASE (PS1_REF,         PS1_REF);
+      FORMAT_CASE (ELIXIR, 	    Elixir,          FALSE);
+      FORMAT_CASE (LONEOS, 	    Loneos,          FALSE);
+      FORMAT_CASE (PANSTARRS_DEV_0, Panstarrs_DEV_0, FALSE);
+      FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1, FALSE);
+      FORMAT_CASE (PS1_DEV_1,       PS1_DEV_1,       FALSE);
+      FORMAT_CASE (PS1_DEV_2,       PS1_DEV_2,       FALSE);
+      FORMAT_CASE (PS1_V1,          PS1_V1,          FALSE);
+      FORMAT_CASE (PS1_V2,          PS1_V2,          FALSE);
+      FORMAT_CASE (PS1_V3,          PS1_V3,          FALSE);
+      FORMAT_CASE (PS1_V4,          PS1_V4,          FALSE);
+      FORMAT_CASE (PS1_V5,          PS1_V5,          TRUE);
+      FORMAT_CASE (PS1_REF,         PS1_REF,         FALSE);
 # undef FORMAT_CASE
 
@@ -309,4 +319,5 @@
   CONVERT_FORMAT ("DVO_SECFILT_PS1_V3",          PS1_V3,          PS1_V3);
   CONVERT_FORMAT ("DVO_SECFILT_PS1_V4",          PS1_V4,          PS1_V4);
+  CONVERT_FORMAT ("DVO_SECFILT_PS1_V5",          PS1_V5,          PS1_V5);
   CONVERT_FORMAT ("DVO_SECFILT_PS1_REF",         PS1_REF,         PS1_REF);
 # undef CONVERT_FORMAT
@@ -344,4 +355,5 @@
       FORMAT_CASE (PS1_V3,          PS1_V3);
       FORMAT_CASE (PS1_V4,          PS1_V4);
+      FORMAT_CASE (PS1_V5,          PS1_V5);
       FORMAT_CASE (PS1_REF,         PS1_REF);
 # undef FORMAT_CASE
@@ -428,4 +440,5 @@
   CONVERT_FORMAT ("DVO_IMAGE_PS1_V3",          PS1_V3,          PS1_V3);
   CONVERT_FORMAT ("DVO_IMAGE_PS1_V4",          PS1_V4,          PS1_V4);
+  CONVERT_FORMAT ("DVO_IMAGE_PS1_V5",          PS1_V5,          PS1_V5);
   CONVERT_FORMAT ("DVO_IMAGE_PS1_REF",         PS1_REF,         PS1_REF);
 
@@ -467,4 +480,5 @@
       FORMAT_CASE (PS1_V3,          PS1_V3);
       FORMAT_CASE (PS1_V4,          PS1_V4);
+      FORMAT_CASE (PS1_V5,          PS1_V5);
       FORMAT_CASE (PS1_REF,         PS1_REF);
 
@@ -522,4 +536,5 @@
       FORMAT_CASE (PS1_V3,          PS1_V3);
       FORMAT_CASE (PS1_V4,          PS1_V4);
+      FORMAT_CASE (PS1_V5,          PS1_V5);
       FORMAT_CASE (PS1_REF,         PS1_REF);
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c	(revision 36898)
@@ -3,5 +3,5 @@
 /* convert PS1_DEV_1 formats to internal formats */
 
-Measure *Measure_PS1_DEV_1_ToInternal (Measure_PS1_DEV_1 *in, off_t Nvalues) {
+Measure *Measure_PS1_DEV_1_ToInternal (Average *ave, Measure_PS1_DEV_1 *in, off_t Nvalues) {
 
   off_t i;
@@ -12,6 +12,8 @@
   for (i = 0; i < Nvalues; i++) {
     dvo_measure_init (&out[i]);
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+
+    int averef = in[i].averef;
+    out[i].R          = ave[averef].R - in[i].dR / 3600.0;
+    out[i].D          = ave[averef].D - in[i].dD / 3600.0;
     out[i].M          = in[i].M;
     out[i].Mcal       = in[i].Mcal;
@@ -50,5 +52,5 @@
 }
 
-Measure_PS1_DEV_1 *MeasureInternalTo_PS1_DEV_1 (Measure *in, off_t Nvalues) {
+Measure_PS1_DEV_1 *MeasureInternalTo_PS1_DEV_1 (Average *ave, Measure *in, off_t Nvalues) {
 
   off_t i;
@@ -58,6 +60,8 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+
+    out[i].dR         = 3600.0*(ave[averef].R - in[i].R);
+    out[i].dD         = 3600.0*(ave[averef].D - in[i].D);
     out[i].M          = in[i].M;
     out[i].Mcal       = in[i].Mcal;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c	(revision 36898)
@@ -3,5 +3,5 @@
 /* convert PS1_DEV_2 formats to internal formats */
 
-Measure *Measure_PS1_DEV_2_ToInternal (Measure_PS1_DEV_2 *in, off_t Nvalues) {
+Measure *Measure_PS1_DEV_2_ToInternal (Average *ave, Measure_PS1_DEV_2 *in, off_t Nvalues) {
 
   off_t i;
@@ -12,6 +12,8 @@
   for (i = 0; i < Nvalues; i++) {
     dvo_measure_init (&out[i]);
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+
+    int averef = in[i].averef;
+    out[i].R          = ave[averef].R - in[i].dR / 3600.0;
+    out[i].D          = ave[averef].D - in[i].dD / 3600.0;
     out[i].M          = in[i].M;
     out[i].Mcal       = in[i].Mcal;
@@ -48,5 +50,5 @@
 }
 
-Measure_PS1_DEV_2 *MeasureInternalTo_PS1_DEV_2 (Measure *in, off_t Nvalues) {
+Measure_PS1_DEV_2 *MeasureInternalTo_PS1_DEV_2 (Average *ave, Measure *in, off_t Nvalues) {
 
   off_t i;
@@ -56,6 +58,8 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+
+    out[i].dR         = 3600.0*(ave[averef].R - in[i].R);
+    out[i].dD         = 3600.0*(ave[averef].D - in[i].D);
     out[i].M          = in[i].M;
     out[i].Mcal       = in[i].Mcal;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c	(revision 36898)
@@ -3,5 +3,5 @@
 /* convert PS1_REF formats to internal formats */
 
-Measure *Measure_PS1_REF_ToInternal (Measure_PS1_REF *in, off_t Nvalues) {
+Measure *Measure_PS1_REF_ToInternal (Average *ave, Measure_PS1_REF *in, off_t Nvalues) {
 
   off_t i;
@@ -13,6 +13,7 @@
     dvo_measure_init (&out[i]);
 
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+    out[i].R          = ave[averef].R - in[i].dR / 3600.0;
+    out[i].D          = ave[averef].D - in[i].dD / 3600.0;
     out[i].M          = in[i].M;
     out[i].dM         = in[i].dM;
@@ -28,5 +29,5 @@
 }
 
-Measure_PS1_REF *MeasureInternalTo_PS1_REF (Measure *in, off_t Nvalues) {
+Measure_PS1_REF *MeasureInternalTo_PS1_REF (Average *ave, Measure *in, off_t Nvalues) {
 
   off_t i;
@@ -36,6 +37,8 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+
+    out[i].dR         = 3600.0*(ave[averef].R - in[i].R);
+    out[i].dD         = 3600.0*(ave[averef].D - in[i].D);
     out[i].M          = in[i].M;
     out[i].dM         = in[i].dM;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c	(revision 36898)
@@ -3,5 +3,5 @@
 /* convert PS1_V1 formats to internal formats */
 
-Measure *Measure_PS1_V1_ToInternal (Measure_PS1_V1 *in, off_t Nvalues) {
+Measure *Measure_PS1_V1_ToInternal (Average *ave, Measure_PS1_V1 *in, off_t Nvalues) {
 
   off_t i;
@@ -13,6 +13,7 @@
     dvo_measure_init (&out[i]);
 
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+    out[i].R          = ave[averef].R - in[i].dR / 3600.0;
+    out[i].D          = ave[averef].D - in[i].dD / 3600.0;
     out[i].M          = in[i].M;
     out[i].Mcal       = in[i].Mcal;
@@ -58,5 +59,5 @@
 }
 
-Measure_PS1_V1 *MeasureInternalTo_PS1_V1 (Measure *in, off_t Nvalues) {
+Measure_PS1_V1 *MeasureInternalTo_PS1_V1 (Average *ave, Measure *in, off_t Nvalues) {
 
   off_t i;
@@ -66,6 +67,8 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+
+    out[i].dR         = 3600.0*(ave[averef].R - in[i].R);
+    out[i].dD         = 3600.0*(ave[averef].D - in[i].D);
     out[i].M          = in[i].M;
     out[i].Mcal       = in[i].Mcal;
@@ -199,6 +202,6 @@
     out[i].Ncode = in[i].Ncode;
     out[i].Nused = in[i].Nused;
-    out[i].M_20  = in[i].M_20;      
-    out[i].M_80  = in[i].M_80;      
+    out[i].Mmin  = in[i].M_20*0.001;      
+    out[i].Mmax  = in[i].M_80*0.001;      
  }
   return (out);
@@ -218,6 +221,6 @@
     out[i].Ncode = in[i].Ncode;
     out[i].Nused = in[i].Nused;
-    out[i].M_20  = in[i].M_20;      
-    out[i].M_80  = in[i].M_80;      
+    out[i].M_20  = in[i].Mmin*1000.0;      
+    out[i].M_80  = in[i].Mmax*1000.0;      
   }
   return (out);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c	(revision 36898)
@@ -3,5 +3,5 @@
 /* convert PS1_V2 formats to internal formats */
 
-Measure *Measure_PS1_V2_ToInternal (Measure_PS1_V2 *in, off_t Nvalues) {
+Measure *Measure_PS1_V2_ToInternal (Average *ave, Measure_PS1_V2 *in, off_t Nvalues) {
 
   off_t i;
@@ -13,6 +13,7 @@
     dvo_measure_init (&out[i]);
 
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+    out[i].R          = ave[averef].R - in[i].dR / 3600.0;
+    out[i].D          = ave[averef].D - in[i].dD / 3600.0;
     out[i].M          = in[i].M;
     out[i].Mcal       = in[i].Mcal;
@@ -59,5 +60,5 @@
 }
 
-Measure_PS1_V2 *MeasureInternalTo_PS1_V2 (Measure *in, off_t Nvalues) {
+Measure_PS1_V2 *MeasureInternalTo_PS1_V2 (Average *ave, Measure *in, off_t Nvalues) {
 
   off_t i;
@@ -67,6 +68,8 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+
+    out[i].dR         = 3600.0*(ave[averef].R - in[i].R);
+    out[i].dD         = 3600.0*(ave[averef].D - in[i].D);
     out[i].M          = in[i].M;
     out[i].Mcal       = in[i].Mcal;
@@ -209,6 +212,6 @@
     out[i].Ncode = in[i].Ncode;
     out[i].Nused = in[i].Nused;
-    out[i].M_20  = in[i].M_20;      
-    out[i].M_80  = in[i].M_80;      
+    out[i].Mmin  = in[i].M_20*0.001;      
+    out[i].Mmax  = in[i].M_80*0.001;      
  }
   return (out);
@@ -229,6 +232,6 @@
     out[i].Ncode = in[i].Ncode;
     out[i].Nused = in[i].Nused;
-    out[i].M_20  = in[i].M_20;      
-    out[i].M_80  = in[i].M_80;      
+    out[i].M_20  = in[i].Mmin*1000.0;      
+    out[i].M_80  = in[i].Mmax*1000.0;      
   }
   return (out);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c	(revision 36898)
@@ -3,5 +3,5 @@
 /* convert PS1_V3 formats to internal formats */
 
-Measure *Measure_PS1_V3_ToInternal (Measure_PS1_V3 *in, off_t Nvalues) {
+Measure *Measure_PS1_V3_ToInternal (Average *ave, Measure_PS1_V3 *in, off_t Nvalues) {
 
   off_t i;
@@ -13,6 +13,7 @@
     dvo_measure_init (&out[i]);
 
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+    out[i].R          = ave[averef].R - in[i].dR / 3600.0;
+    out[i].D          = ave[averef].D - in[i].dD / 3600.0;
     out[i].M          = in[i].M;
     out[i].Mcal       = in[i].Mcal;
@@ -59,5 +60,5 @@
 }
 
-Measure_PS1_V3 *MeasureInternalTo_PS1_V3 (Measure *in, off_t Nvalues) {
+Measure_PS1_V3 *MeasureInternalTo_PS1_V3 (Average *ave, Measure *in, off_t Nvalues) {
 
   off_t i;
@@ -67,6 +68,8 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+
+    out[i].dR         = 3600.0*(ave[averef].R - in[i].R);
+    out[i].dD         = 3600.0*(ave[averef].D - in[i].D);
     out[i].M          = in[i].M;
     out[i].Mcal       = in[i].Mcal;
@@ -214,6 +217,6 @@
     out[i].Ncode       = in[i].Ncode;
     out[i].Nused       = in[i].Nused;
-    out[i].M_20        = in[i].M_20;      
-    out[i].M_80        = in[i].M_80;      
+    out[i].Mmin        = in[i].M_20*0.001;      
+    out[i].Mmax        = in[i].M_80*0.001;      
     out[i].Mstdev      = in[i].Mstdev;      
     out[i].ubercalDist = in[i].ubercalDist;      
@@ -237,6 +240,6 @@
     out[i].Ncode       = in[i].Ncode;
     out[i].Nused       = in[i].Nused;
-    out[i].M_20        = in[i].M_20;      
-    out[i].M_80        = in[i].M_80;      
+    out[i].M_20        = in[i].Mmin*1000.0;      
+    out[i].M_80        = in[i].Mmax*1000.0;      
     out[i].Mstdev      = in[i].Mstdev;      
     out[i].ubercalDist = in[i].ubercalDist;      
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c	(revision 36898)
@@ -3,5 +3,5 @@
 /* convert PS1_V4 formats to internal formats */
 
-Measure *Measure_PS1_V4_ToInternal (Measure_PS1_V4 *in, off_t Nvalues) {
+Measure *Measure_PS1_V4_ToInternal (Average *ave, Measure_PS1_V4 *in, off_t Nvalues) {
 
   off_t i;
@@ -13,6 +13,7 @@
     dvo_measure_init (&out[i]);
 
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+    out[i].R          = ave[averef].R - in[i].dR / 3600.0;
+    out[i].D          = ave[averef].D - in[i].dD / 3600.0;
     out[i].M          = in[i].M;
     out[i].Mcal       = in[i].Mcal;
@@ -68,5 +69,5 @@
 }
 
-Measure_PS1_V4 *MeasureInternalTo_PS1_V4 (Measure *in, off_t Nvalues) {
+Measure_PS1_V4 *MeasureInternalTo_PS1_V4 (Average *ave, Measure *in, off_t Nvalues) {
 
   off_t i;
@@ -76,6 +77,8 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+
+    out[i].dR         = 3600.0*(ave[averef].R - in[i].R);
+    out[i].dD         = 3600.0*(ave[averef].D - in[i].D);
     out[i].M          = in[i].M;
     out[i].Mcal       = in[i].Mcal;
@@ -237,13 +240,13 @@
     out[i].dM            = in[i].dM;      
     out[i].Xm            = in[i].Xm;     
-    out[i].FluxPSF       = in[i].FluxPSF;
-    out[i].dFluxPSF      = in[i].dFluxPSF;
-    out[i].FluxKron      = in[i].FluxKron;
-    out[i].dFluxKron     = in[i].dFluxKron;
+    out[i].FpsfStk       = in[i].FluxPSF;
+    out[i].dFpsfStk      = in[i].dFluxPSF;
+    out[i].FkronStk      = in[i].FluxKron;
+    out[i].dFkronStk     = in[i].dFluxKron;
     out[i].flags         = in[i].flags;     
     out[i].Ncode         = in[i].Ncode;
     out[i].Nused         = in[i].Nused;
-    out[i].M_20          = in[i].M_20;      
-    out[i].M_80          = in[i].M_80;      
+    out[i].Mmin          = in[i].M_20*0.001;      
+    out[i].Mmax          = in[i].M_80*0.001;      
     out[i].Mstdev        = in[i].Mstdev;      
     out[i].ubercalDist   = in[i].ubercalDist;      
@@ -267,13 +270,13 @@
     out[i].dM          	 = in[i].dM;      
     out[i].Xm          	 = in[i].Xm;     
-    out[i].FluxPSF     	 = in[i].FluxPSF;
-    out[i].dFluxPSF    	 = in[i].dFluxPSF;
-    out[i].FluxKron    	 = in[i].FluxKron;
-    out[i].dFluxKron   	 = in[i].dFluxKron;
+    out[i].FluxPSF     	 = in[i].FpsfStk;
+    out[i].dFluxPSF    	 = in[i].dFpsfStk;
+    out[i].FluxKron    	 = in[i].FkronStk;
+    out[i].dFluxKron   	 = in[i].dFkronStk;
     out[i].flags       	 = in[i].flags;     
     out[i].Ncode       	 = in[i].Ncode;
     out[i].Nused       	 = in[i].Nused;
-    out[i].M_20        	 = in[i].M_20;      
-    out[i].M_80        	 = in[i].M_80;      
+    out[i].M_20        	 = in[i].Mmin*1000.0;      
+    out[i].M_80        	 = in[i].Mmax*1000.0;      
     out[i].Mstdev      	 = in[i].Mstdev;      
     out[i].ubercalDist 	 = in[i].ubercalDist;      
@@ -486,5 +489,5 @@
 /*** there are some mini dvodbs with the wrong PS1_V4 format (missing Xoff,Yoff / Xfix,Yfix) ************/
 
-Measure *Measure_PS1_V4alt_ToInternal (Measure_PS1_V4alt *in, off_t Nvalues) {
+Measure *Measure_PS1_V4alt_ToInternal (Average *ave, Measure_PS1_V4alt *in, off_t Nvalues) {
 
   off_t i;
@@ -496,6 +499,7 @@
     dvo_measure_init (&out[i]);
 
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+    out[i].R          = ave[averef].R - in[i].dR / 3600.0;
+    out[i].D          = ave[averef].D - in[i].dD / 3600.0;
     out[i].M          = in[i].M;
     out[i].Mcal       = in[i].Mcal;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_elixir.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_elixir.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_elixir.c	(revision 36898)
@@ -2,5 +2,5 @@
 
 /* convert elixir-format measures to internal measures */
-Measure *Measure_Elixir_ToInternal (Measure_Elixir *in, off_t Nvalues) {
+Measure *Measure_Elixir_ToInternal (Average *ave, Measure_Elixir *in, off_t Nvalues) {
 
   off_t i;
@@ -15,7 +15,10 @@
     out[i].averef   = in[i].averef;
 
+    // changed for PS1_V5
+    int averef = out[i].averef;
+    out[i].R          = (in[i].dR == NAN_S_SHORT) ? NAN : ave[averef].R - 0.01 * in[i].dR / 3600.0;
+    out[i].D          = (in[i].dD == NAN_S_SHORT) ? NAN : ave[averef].D - 0.01 * in[i].dD / 3600.0;
+
     // changed for PANSTARRS_DEV_0
-    out[i].dR       = (in[i].dR      == NAN_S_SHORT) ? NAN : in[i].dR     * 0.01;
-    out[i].dD       = (in[i].dD      == NAN_S_SHORT) ? NAN : in[i].dD     * 0.01;
     out[i].M        = (in[i].M       == NAN_S_SHORT) ? NAN : in[i].M      * 0.001;
     out[i].dM       = (in[i].dM      == NAN_U_CHAR)  ? NAN : in[i].dM     * 0.001;
@@ -47,5 +50,5 @@
 
 /* convert internal measures to elixir-format measures */
-Measure_Elixir *MeasureInternalTo_Elixir (Measure *in, off_t Nvalues) {
+Measure_Elixir *MeasureInternalTo_Elixir (Average *ave, Measure *in, off_t Nvalues) {
 
   off_t i;
@@ -59,7 +62,11 @@
     out[i].averef  = in[i].averef;
 
+    // changed for PS1_V5
+    int averef = in[i].averef;
+    int isBad = isnan(in[i].R) || isnan(in[i].D);
+    out[i].dR     = isBad ? NAN_S_SHORT : 100.0*3600.0*(ave[averef].R - in[i].R);
+    out[i].dD     = isBad ? NAN_S_SHORT : 100.0*3600.0*(ave[averef].D - in[i].D);
+
     // changed for PANSTARRS_DEV_0
-    out[i].dR       = isnan(in[i].dR     ) ? NAN_S_SHORT : in[i].dR      *  100.0;
-    out[i].dD       = isnan(in[i].dD     ) ? NAN_S_SHORT : in[i].dD      *  100.0;
     out[i].M        = isnan(in[i].M      ) ? NAN_S_SHORT : in[i].M       * 1000.0;
     out[i].dM       = isnan(in[i].dM     ) ? NAN_U_CHAR  : in[i].dM      * 1000.0;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_loneos.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_loneos.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_loneos.c	(revision 36898)
@@ -2,5 +2,5 @@
 
 /* convert loneos-format measures to internal measures */
-Measure *Measure_Loneos_ToInternal (Measure_Loneos *in, off_t Nvalues) {
+Measure *Measure_Loneos_ToInternal (Average *ave, Measure_Loneos *in, off_t Nvalues) {
 
   off_t i;
@@ -18,7 +18,10 @@
     out[i].t         = in[i].t;
 
+    // changed for PS1_V5
+    int averef = out[i].averef;
+    out[i].R          = (in[i].dR == NAN_S_SHORT) ? NAN : ave[averef].R - 0.01 * in[i].dR / 3600.0;
+    out[i].D          = (in[i].dD == NAN_S_SHORT) ? NAN : ave[averef].D - 0.01 * in[i].dD / 3600.0;
+
     // changed for PANSTARRS_DEV_0
-    out[i].dR       = (in[i].dR      == NAN_S_SHORT) ? NAN : in[i].dR     * 0.01;
-    out[i].dD       = (in[i].dD      == NAN_S_SHORT) ? NAN : in[i].dD     * 0.01;
     out[i].M        = (in[i].M       == NAN_S_SHORT) ? NAN : in[i].M      * 0.001;
     out[i].dM       = (in[i].dM      == NAN_U_CHAR)  ? NAN : in[i].dM     * 0.001;
@@ -40,5 +43,5 @@
 
 /* convert internal measures to loneos-format measures */
-Measure_Loneos *MeasureInternalTo_Loneos (Measure *in, off_t Nvalues) {
+Measure_Loneos *MeasureInternalTo_Loneos (Average *ave, Measure *in, off_t Nvalues) {
 
   off_t i;
@@ -48,8 +51,10 @@
 
   for (i = 0; i < Nvalues; i++) {
-
-    // changed for PANSTARRS_DEV_0
-    out[i].dR     = isnan(in[i].dR     ) ? NAN_S_SHORT : in[i].dR      *  100.0;
-    out[i].dD     = isnan(in[i].dD     ) ? NAN_S_SHORT : in[i].dD      *  100.0;
+    // changed for PS1_V5
+    int averef = in[i].averef;
+    int isBad = isnan(in[i].R) || isnan(in[i].D);
+    out[i].dR     = isBad ? NAN_S_SHORT : 100.0*3600.0*(ave[averef].R - in[i].R);
+    out[i].dD     = isBad ? NAN_S_SHORT : 100.0*3600.0*(ave[averef].D - in[i].D);
+
     out[i].M      = isnan(in[i].M      ) ? NAN_S_SHORT : in[i].M       * 1000.0;
     out[i].dM     = isnan(in[i].dM     ) ? NAN_U_CHAR  : in[i].dM      * 1000.0;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c	(revision 36898)
@@ -2,5 +2,5 @@
 
 /* convert panstarrs-format measures to internal measures */
-Measure *Measure_Panstarrs_DEV_0_ToInternal (Measure_Panstarrs_DEV_0 *in, off_t Nvalues) {
+Measure *Measure_Panstarrs_DEV_0_ToInternal (Average *ave, Measure_Panstarrs_DEV_0 *in, off_t Nvalues) {
 
   off_t i;
@@ -11,6 +11,8 @@
   for (i = 0; i < Nvalues; i++) {
     dvo_measure_init (&out[i]);
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+
+    int averef = in[i].averef;
+    out[i].R          = ave[averef].R - in[i].dR / 3600.0;
+    out[i].D          = ave[averef].D - in[i].dD / 3600.0;
     out[i].M          = in[i].M;
     out[i].dM         = in[i].dM;
@@ -52,5 +54,5 @@
 
 /* convert internal measures to panstarrs-format measures */
-Measure_Panstarrs_DEV_0 *MeasureInternalTo_Panstarrs_DEV_0 (Measure *in, off_t Nvalues) {
+Measure_Panstarrs_DEV_0 *MeasureInternalTo_Panstarrs_DEV_0 (Average *ave, Measure *in, off_t Nvalues) {
 
   off_t i;
@@ -60,6 +62,8 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+
+    out[i].dR         = 3600.0*(ave[averef].R - in[i].R);
+    out[i].dD         = 3600.0*(ave[averef].D - in[i].D);
     out[i].M          = in[i].M;
     out[i].dM         = in[i].dM;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c	(revision 36898)
@@ -2,5 +2,5 @@
 
 /* convert panstarrs-format measures to internal measures */
-Measure *Measure_Panstarrs_DEV_1_ToInternal (Measure_Panstarrs_DEV_1 *in, off_t Nvalues) {
+Measure *Measure_Panstarrs_DEV_1_ToInternal (Average *ave, Measure_Panstarrs_DEV_1 *in, off_t Nvalues) {
 
   off_t i;
@@ -11,6 +11,8 @@
   for (i = 0; i < Nvalues; i++) {
     dvo_measure_init (&out[i]);
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+
+    int averef = in[i].averef;
+    out[i].R          = ave[averef].R - in[i].dR / 3600.0;
+    out[i].D          = ave[averef].D - in[i].dD / 3600.0;
     out[i].M          = in[i].M;
     out[i].dM         = in[i].dM;
@@ -52,5 +54,5 @@
 
 /* convert internal measures to panstarrs-format measures */
-Measure_Panstarrs_DEV_1 *MeasureInternalTo_Panstarrs_DEV_1 (Measure *in, off_t Nvalues) {
+Measure_Panstarrs_DEV_1 *MeasureInternalTo_Panstarrs_DEV_1 (Average *ave, Measure *in, off_t Nvalues) {
 
   off_t i;
@@ -60,6 +62,8 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].dR         = in[i].dR;
-    out[i].dD         = in[i].dD;
+    int averef = in[i].averef;
+
+    out[i].dR         = 3600.0*(ave[averef].R - in[i].R);
+    out[i].dD         = 3600.0*(ave[averef].D - in[i].D);
     out[i].M          = in[i].M;
     out[i].dM         = in[i].dM;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_image.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_image.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_image.c	(revision 36898)
@@ -219,4 +219,5 @@
   if (db[0].format == DVO_FORMAT_PS1_V3)          gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PS1_V3");
   if (db[0].format == DVO_FORMAT_PS1_V4)          gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PS1_V4");
+  if (db[0].format == DVO_FORMAT_PS1_V5)          gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PS1_V5");
   if (db[0].format == DVO_FORMAT_PS1_REF)         gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PS1_REF");
   
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_image_raw.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_image_raw.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_image_raw.c	(revision 36898)
@@ -59,4 +59,5 @@
   if (db[0].format == DVO_FORMAT_PS1_V3)          ImageSize = sizeof(Image_PS1_V3);
   if (db[0].format == DVO_FORMAT_PS1_V4)          ImageSize = sizeof(Image_PS1_V4);
+  if (db[0].format == DVO_FORMAT_PS1_V5)          ImageSize = sizeof(Image_PS1_V5);
   if (db[0].format == DVO_FORMAT_PS1_REF)         ImageSize = sizeof(Image_PS1_REF);
 
@@ -89,4 +90,5 @@
   if (db[0].format == DVO_FORMAT_PS1_V3)          gfits_table_mkheader_Image_PS1_V3 (&db[0].theader);
   if (db[0].format == DVO_FORMAT_PS1_V4)          gfits_table_mkheader_Image_PS1_V4 (&db[0].theader);
+  if (db[0].format == DVO_FORMAT_PS1_V5)          gfits_table_mkheader_Image_PS1_V5 (&db[0].theader);
   if (db[0].format == DVO_FORMAT_PS1_REF)         gfits_table_mkheader_Image_PS1_REF (&db[0].theader);
     
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_photcode_ops.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 36898)
@@ -857,5 +857,5 @@
 
   Ns = photcodes[0].hashNsec[code[0].code];
-  Fpsf = (Ns == -1) ? NAN : secfilt[Ns].FluxPSF;
+  Fpsf = (Ns == -1) ? NAN : secfilt[Ns].FpsfStk;
   return (Fpsf);
 }
@@ -869,5 +869,5 @@
 
   Ns = photcodes[0].hashNsec[code[0].code];
-  dFpsf = (Ns == -1) ? NAN : secfilt[Ns].dFluxPSF;
+  dFpsf = (Ns == -1) ? NAN : secfilt[Ns].dFpsfStk;
   return (dFpsf);
 }
@@ -881,5 +881,5 @@
 
   Ns = photcodes[0].hashNsec[code[0].code];
-  Fkron = (Ns == -1) ? NAN : secfilt[Ns].FluxKron;
+  Fkron = (Ns == -1) ? NAN : secfilt[Ns].FkronStk;
   return (Fkron);
 }
@@ -893,30 +893,30 @@
 
   Ns = photcodes[0].hashNsec[code[0].code];
-  dFkron = (Ns == -1) ? NAN : secfilt[Ns].dFluxKron;
+  dFkron = (Ns == -1) ? NAN : secfilt[Ns].dFkronStk;
   return (dFkron);
 }
 
-float PhotM20 (PhotCode *code, Average *average, SecFilt *secfilt) {
-
-  int Ns;
-  float M20;
-
-  if (code == NULL) return NAN;
-
-  Ns = photcodes[0].hashNsec[code[0].code];
-  M20  = (Ns == -1) ? NAN : 0.001*secfilt[Ns].M_20;
-  return (M20);
-}
-
-float PhotM80 (PhotCode *code, Average *average, SecFilt *secfilt) {
-
-  int Ns;
-  float M80;
-
-  if (code == NULL) return NAN;
-
-  Ns = photcodes[0].hashNsec[code[0].code];
-  M80  = (Ns == -1) ? NAN : 0.001*secfilt[Ns].M_80;
-  return (M80);
+float PhotMmin (PhotCode *code, Average *average, SecFilt *secfilt) {
+
+  int Ns;
+  float Mmin;
+
+  if (code == NULL) return NAN;
+
+  Ns = photcodes[0].hashNsec[code[0].code];
+  Mmin  = (Ns == -1) ? NAN : secfilt[Ns].Mmin;
+  return (Mmin);
+}
+
+float PhotMmax (PhotCode *code, Average *average, SecFilt *secfilt) {
+
+  int Ns;
+  float Mmax;
+
+  if (code == NULL) return NAN;
+
+  Ns = photcodes[0].hashNsec[code[0].code];
+  Mmax  = (Ns == -1) ? NAN : secfilt[Ns].Mmax;
+  return (Mmax);
 }
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_tiny_values.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_tiny_values.c	(revision 36897)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_tiny_values.c	(revision 36898)
@@ -14,6 +14,6 @@
 
 void CopyMeasureToTiny (MeasureTiny *measureT, Measure *measure) {
-  measureT[0].dR         = measure[0].dR;
-  measureT[0].dD         = measure[0].dD;
+  measureT[0].R          = measure[0].R;
+  measureT[0].D          = measure[0].D;
   measureT[0].M          = measure[0].M;
   measureT[0].Mcal       = measure[0].Mcal;
