Index: /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/include/cmf-ps1-v5-r2-lensing.h
===================================================================
--- /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/include/cmf-ps1-v5-r2-lensing.h	(revision 38547)
+++ /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/include/cmf-ps1-v5-r2-lensing.h	(revision 38548)
@@ -95,4 +95,6 @@
 
 CMF_PS1_V5_R2_Lensing *gfits_table_get_CMF_PS1_V5_R2_Lensing (FTable *table, off_t *Ndata, char *swapped);
+CMF_PS1_V5_R2_Lensing *gfits_table_get_CMF_PS1_V5_R2x_Lensing (FTable *ftable, off_t *Ndata, char *swapped);
+
 int      gfits_table_set_CMF_PS1_V5_R2_Lensing (FTable *ftable, CMF_PS1_V5_R2_Lensing *data, off_t Ndata);
 int      gfits_table_mkheader_CMF_PS1_V5_R2_Lensing (Header *header);
Index: /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/cmf-ps1-v5-r2-lensing.c
===================================================================
--- /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/cmf-ps1-v5-r2-lensing.c	(revision 38547)
+++ /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/cmf-ps1-v5-r2-lensing.c	(revision 38548)
@@ -480,2 +480,54 @@
 }
 
+/** ****/
+int fix_lensing (char *data, int Nrows) {
+
+  off_t i;
+
+  int Nbytes = sizeof (CMF_PS1_V5_R2_Lensing);
+
+  char buffer[64];
+
+  char *ptr = data;
+  for (i = 0; i < Nrows; i++, ptr += Nbytes) {
+    // bytes 184 - 224 (exclusive) are now at 288 - 328 (exclusive)
+    memcpy (buffer, &ptr[288], 40);
+    memmove (&ptr[224], &ptr[184], 104);
+    memcpy (&ptr[184], buffer, 40);
+  }
+  return TRUE;
+}
+
+/**************************************/
+CMF_PS1_V5_R2_Lensing *gfits_table_get_CMF_PS1_V5_R2x_Lensing (FTable *ftable, off_t *Ndata, char *swapped) {
+
+  int Ncols;
+  CMF_PS1_V5_R2_Lensing *data;
+
+  Ncols = ftable[0].header[0].Naxis[0];
+  if (Ncols != ST_SIZE) {
+    fprintf (stderr, "ERROR: mis-match in table size: width is %d but should be %d bytes\n", Ncols, ST_SIZE);
+    return NULL;
+  }
+
+  *Ndata = ftable[0].header[0].Naxis[1];
+
+  fix_lensing (ftable[0].buffer, *Ndata);
+  data = (CMF_PS1_V5_R2_Lensing *) ftable[0].buffer;
+  if ((swapped == NULL) || (*swapped == FALSE)) {
+    if (!gfits_convert_CMF_PS1_V5_R2_Lensing ((unsigned char *) data, sizeof (CMF_PS1_V5_R2_Lensing), *Ndata, TRUE)) {
+      return NULL;
+    }
+    off_t i;
+    for (i = 0; i < *Ndata; i++) {
+      data[i].detID   += 0x80000000;
+      data[i].flags   += 0x80000000;
+      data[i].flags2  += 0x80000000;
+      data[i].nFrames += 0x8000;
+    }
+    // gfits_table_scale_data (ftable);
+    if (swapped != NULL) *swapped = TRUE;
+  }
+  return (data);
+}
+
