Index: trunk/Ohana/src/libdvo/include/dvo.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvo.h	(revision 27025)
+++ trunk/Ohana/src/libdvo/include/dvo.h	(revision 27435)
@@ -10,15 +10,16 @@
 
 /* DVO table formats */
-typedef enum {DVO_FORMAT_UNDEF, 
-	      DVO_FORMAT_INTERNAL, 
-	      DVO_FORMAT_ELIXIR, 
-	      DVO_FORMAT_LONEOS, 
-	      DVO_FORMAT_PANSTARRS_DEV_0,
-	      DVO_FORMAT_PANSTARRS_DEV_1,
-	      DVO_FORMAT_PS1_DEV_1,
-	      DVO_FORMAT_PS1_DEV_2,
-	      DVO_FORMAT_PS1_DEV_3,
-	      DVO_FORMAT_PS1_V1,
-	      DVO_FORMAT_PS1_REF
+typedef enum {
+  DVO_FORMAT_UNDEF, 
+  DVO_FORMAT_INTERNAL, 
+  DVO_FORMAT_ELIXIR, 
+  DVO_FORMAT_LONEOS, 
+  DVO_FORMAT_PANSTARRS_DEV_0,
+  DVO_FORMAT_PANSTARRS_DEV_1,
+  DVO_FORMAT_PS1_DEV_1,
+  DVO_FORMAT_PS1_DEV_2,
+  DVO_FORMAT_PS1_DEV_3,
+  DVO_FORMAT_PS1_V1,
+  DVO_FORMAT_PS1_REF
 } DVOTableFormat;
 
@@ -155,6 +156,4 @@
   FILE  *f;
   char  *filename;
-  int    dbstate;
-  int    lockstate;
   double timeout;
   Header header;
@@ -163,8 +162,10 @@
   FTable ftable;
   VTable vtable;
-  int    mode;          /* what data storage mode is used for disk file? */
-  int    format;        /* what data format is used for disk file? */
-  int    virtual;       /* is table in ftable or vtable? */
-  int    swapped;       /* is table in internal byte-order? */
+  int    dbstate;
+  char   lockstate;
+  char   mode;          /* what data storage mode is used for disk file? */
+  char   format;        /* what data format is used for disk file? */
+  char   virtual;       /* is table in ftable or vtable? */
+  char   swapped;       /* is table in internal byte-order? */
 } FITS_DB;
 
@@ -174,5 +175,5 @@
 /* SkyRegion : better implementation than GSCRegion */
 typedef struct {
-  int Nregions;
+  off_t Nregions;
   char **filename;
   SkyRegion *regions;
@@ -180,5 +181,5 @@
 
 typedef struct {
-  int Nregions;
+  off_t Nregions;
   int ownElements; 				  /* does this list own filename, regions? */
   char **filename;
@@ -187,13 +188,5 @@
 
 // special-case function:
-CMF_PS1_V2 *gfits_table_get_CMF_PS1_V1_Alt (FTable *ftable, int *Ndata, int *swapped);
-
-# if (0)
-/* structure for data on a catalog region */
-typedef struct {
-  char filename[256];
-  double DEC[2], RA[2];
-} GSCRegion;
-# endif
+CMF_PS1_V2 *gfits_table_get_CMF_PS1_V1_Alt (FTable *ftable, off_t *Ndata, char *swapped);
 
 typedef struct {
@@ -219,7 +212,9 @@
 
   int Nsecfilt;  /* number of secfilt entries for each average entry */
-  int Naverage,   Nmeasure,   Nmissing,   Nsecf_mem;  /* current number of each component in memory */
-  int Naves_disk, Nmeas_disk, Nmiss_disk, Nsecf_disk; /* current number of each component on disk */
-  int Naves_off,  Nmeas_off,  Nmiss_off,  Nsecf_off;  /* index of first loaded data value */
+  off_t Naverage,   Nmeasure,   Nmissing,   Nsecf_mem;  /* current number of each component in memory */
+  off_t Naves_disk, Nmeas_disk, Nmiss_disk, Nsecf_disk; /* current number of each component on disk */
+  off_t Naves_off,  Nmeas_off,  Nmiss_off,  Nsecf_off;  /* index of first loaded data value */
+
+  /* the Nsecf_* values above are number of table rows (eg, Naverage*Nsecfilt) */
 
   /* note the different counting for Nsecfilt:
@@ -239,14 +234,14 @@
 
   /* extra catalog information */
-  int lockmode;
-  int catmode;				/* storage mode (raw, mef, split, mysql) */
-  int catformat;			/* storage format (elixir, panstarrs, etc) */
-  int catflags;				/* choices to be loaded */
-  int sorted;				/* is measure table average-sorted? */
+  char lockmode;
+  char catmode;				/* storage mode (raw, mef, split, mysql) */
+  char catformat;			/* storage format (elixir, panstarrs, etc) */
+  char catflags;				/* choices to be loaded */
+  char sorted;				/* is measure table average-sorted? */
   
   /* pointers for data manipulation */
-  int *found;
-  int *image;
-  int *mosaic;
+  off_t *found;
+  off_t *image;
+  off_t *mosaic;
   float *X;
   float *Y;
@@ -261,5 +256,5 @@
 int   gfits_db_lock                PROTO((FITS_DB *db, char *filename));
 int   gfits_db_load                PROTO((FITS_DB *db));
-int   gfits_db_load_segment        PROTO((FITS_DB *db, int start, int Nrows));
+int   gfits_db_load_segment        PROTO((FITS_DB *db, off_t start, off_t Nrows));
 int   gfits_db_save                PROTO((FITS_DB *db));
 int   gfits_db_update              PROTO((FITS_DB *db));
@@ -287,10 +282,10 @@
 
 int isRegisteredMosaic (void);
-int GetRegisteredMosaic (void);
+off_t GetRegisteredMosaic (void);
 int GetMosaicCoords (Coords *coords);
-int FindMosaicForImage (Image *images, int Nimages, int entry);
-int FindMosaicForImage_TableSearch (Image *images, int Nimages, int entry);
-int FindMosaicForImage_MatchSearch (Image *images, int Nimages, int entry);
-int BuildChipMatch (Image *images, int Nimages);
+int FindMosaicForImage (Image *images, off_t Nimages, off_t entry);
+int FindMosaicForImage_TableSearch (Image *images, off_t Nimages, off_t entry);
+int FindMosaicForImage_MatchSearch (Image *images, off_t Nimages, off_t entry);
+int BuildChipMatch (Image *images, off_t Nimages);
 void SetImageCorners (double *X, double *Y, Image *image);
 
@@ -347,13 +342,4 @@
 int get_image_mode (char *name);
 char *get_mode_name (int mode);
-
-/* these functions refer to the DVO structures defined in the includes above
- *  they are being replaced with autocode entries (drop when totally autocoded)
- */
-
-int   Fread (void *ptr, int size, int nitems, FILE *f, char *type);
-int   Fwrite (void *ptr, int size, int nitems, FILE *f, char *type);
-int   ByteSwap (char *ptr, int size, int nitems, char *type);
-int   ConvertStruct (char *buffer, int size, int Nbytes, char *type);
 
 /** dvo_catalog APIs */
@@ -384,25 +370,25 @@
 int dvo_catalog_save_split_complete (Catalog *catalog, char VERBOSE);
 
-int dvo_catalog_load_segment (Catalog *catalog, int VERBOSE, int start, int Nrows);
-int dvo_catalog_load_segment_split (Catalog *catalog, int VERBOSE, int start, int Nrows);
+int dvo_catalog_load_segment (Catalog *catalog, int VERBOSE, off_t start, off_t Nrows);
+int dvo_catalog_load_segment_split (Catalog *catalog, int VERBOSE, off_t start, off_t Nrows);
 
 /*** conversion functions / I/O conversions ***/
-Average *ReadRawAverage (FILE *f, int Naverage, int format, SecFilt **primary);
-Measure *ReadRawMeasure (FILE *f, int Nmeasure, int format);
-SecFilt *ReadRawSecFilt (FILE *f, int Nsecfilt, int format);
-int WriteRawAverage (FILE *f, Average *average, int Naverage, int format, SecFilt *primary);
-int WriteRawMeasure (FILE *f, Measure *measure, int Nmeasure, int format);
-int WriteRawSecFilt (FILE *f, SecFilt *secfilt, int Nsecfilt, int format);
-
-Average *FtableToAverage (FTable *ftable, int *Naverage, int *format, SecFilt **primary);
-Measure *FtableToMeasure (FTable *ftable, int *Nmeasure, int *format);
-SecFilt *FtableToSecFilt (FTable *ftable, int *Nsecfilt, int *format);
-int FtableToImage (FTable *ftable, Header *theader, int *format);
-
-int AverageToFtable (FTable *ftable, Average *average, int Naverage, int format, SecFilt *primary);
-int MeasureToFtable (FTable *ftable, Measure *measure, int Nmeasure, int format);
-int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, int Nsecfilt, int format);
-int ImageToFtable (FTable *ftable, Header *theader, int format);
-int ImageToVtable (VTable *vtable, Header *theader, int format);
+Average *ReadRawAverage (FILE *f, off_t Naverage, char format, SecFilt **primary);
+Measure *ReadRawMeasure (FILE *f, 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 WriteRawSecFilt (FILE *f, SecFilt *secfilt, off_t Nsecfilt, char format);
+
+Average *FtableToAverage (FTable *ftable, off_t *Naverage, char *format, SecFilt **primary);
+Measure *FtableToMeasure (FTable *ftable, 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 SecFiltToFtable (FTable *ftable, SecFilt *secfilt, off_t Nsecfilt, char format);
+int ImageToFtable (FTable *ftable, Header *theader, char format);
+int ImageToVtable (VTable *vtable, Header *theader, char format);
 
 # include "loneos_defs.h"
@@ -425,5 +411,5 @@
 int dvo_image_update_raw (FITS_DB *db, int VERBOSE);
 int dvo_image_save_raw (FITS_DB *db, int VERBOSE);
-int dvo_image_addrows (FITS_DB *db, Image *new, int Nnew);
+int dvo_image_addrows (FITS_DB *db, Image *new, off_t Nnew);
 void dvo_image_create (FITS_DB *db, double ZeroPoint);
 
@@ -454,8 +440,8 @@
 
 /* dvo-specific sorting functions */
-void sortave (Average *ave, int N);
-void sort_image_subset (Image *image, int *subset, int N);
-void sort_coords_index (double *X, double *Y, int *S, int N);
-void sort_regions (SkyRegion *region, int N);
+void sortave (Average *ave, off_t N);
+void sort_image_subset (Image *image, off_t *subset, off_t N);
+void sort_coords_index (double *X, double *Y, off_t *S, off_t N);
+void sort_regions (SkyRegion *region, off_t N);
 
 # endif
Index: trunk/Ohana/src/libdvo/include/dvo.update.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvo.update.h	(revision 27025)
+++ 	(revision )
@@ -1,399 +1,0 @@
-# include <ohana.h>
-# include <gfitsio.h>
-# include <autocode.h>
-
-# ifndef DVO_H
-# define DVO_H
-
-/*
-  # define ELIXIR 1
-  # define PANSTARRS 0
-  # define LONEOS 0
-*/
-
-/*** named data values (convert all to enums?) ***/
-
-/* DVO table modes */
-enum {DVO_MODE_UNDEF, DVO_MODE_RAW, DVO_MODE_MEF, DVO_MODE_SPLIT, DVO_MODE_MYSQL} DVOTableMode;
-
-/* DVO table formats */
-enum {DVO_FORMAT_UNDEF, DVO_FORMAT_INTERNAL, DVO_FORMAT_ELIXIR, DVO_FORMAT_LONEOS, DVO_FORMAT_PANSTARRS, DVO_FORMAT_PMTEST} DVOTableFormat;
-
-/* image data modes in RegImage */
-enum {T_UNDEF = -1, T_NONE, T_OBJECT, T_DARK, T_BIAS, T_FLAT, T_MASK, T_FRINGE, T_SCATTER, T_MODES, T_FRINGEPTS, T_ANY, N_TYPE};
-enum {M_UNDEF = -1, M_NONE, M_MEF, M_SPLIT, M_SINGLE, M_CUBE, M_SLICE, M_MODES, N_MODE};
-
-typedef enum {
-    PROJ_NONE, // undefined
-    PROJ_ZEA, // zenithal
-    PROJ_ZPL, // zenithal
-    PROJ_ARC, // zenithal
-    PROJ_STG, // zenithal
-    PROJ_SIN, // zenithal
-    PROJ_TAN, // zenithal
-    PROJ_DIS, // zenithal (TAN + polyterms)
-    PROJ_LIN, // cartesian
-    PROJ_PLY, // cartesian
-    PROJ_WRP, // cartesian
-    PROJ_AIT, // pseudocyl
-    PROJ_GLS, // pseudocyl
-    PROJ_PAR, // pseudocyl
-} OhanaProjections;
-
-typedef enum {
-  PROJ_MODE_NONE,
-  PROJ_MODE_CARTESIAN,
-  PROJ_MODE_ZENITHAL,
-  PROJ_MODE_PSEUDOCYL,
-} OhanaProjectionModes;
-
-/* RegImage.flag values */
-# define IMREG_DIST  0x01 /* image distributed, only imregister-3.0 */
-
-/* catalog values to be loaded */
-# define LOAD_AVES 	0x01
-# define LOAD_MEAS 	0x02
-# define LOAD_MISS 	0x04
-# define LOAD_SECF 	0x08 
-# define LOAD_MEAS_META 0x10
-
-/* invalid mag value */
-# define NO_MAG    0x7fff
-# define NO_ERR    0xff
-
-/* photometry code types */
-# define PHOT_PRI 0x01
-# define PHOT_SEC 0x02
-# define PHOT_DEP 0x03
-# define PHOT_REF 0x04
-# define PHOT_ALT 0x05  /* never stored, only for look-ups */
-
-/* Image.code values.  these are codes to note bad images */
-# define ID_IMAGE_NEW   0x0000  /* no nrphot attempted */
-# define ID_IMAGE_NOCAL 0x0001  /* used within nrphot to mean "don't apply fit" */
-# define ID_IMAGE_POOR  0x0002  /* relphot says image is bad */
-# define ID_IMAGE_SKIP  0x0004  /* external information image is bad */
-# define ID_IMAGE_FEW   0x0008  /* currently too few measurements for good value */
-
-/* Measure.flags values */
-# define ID_MEAS_NOCAL        0x0001
-# define ID_MEAS_POOR         0x0002
-# define ID_MEAS_SKIP         0x0004
-# define ID_MEAS_AREA         0x0008
-# define BLEND_IMAGE          0x0100 
-# define BLEND_CATALOG        0x0200
-# define BLEND_IMAGE_NEIGHBOR 0x1000
-# define ID_MEAS_TRAIL        0x2000
-# define ID_MEAS_GHOST        0x4000
-
-/* some subtle distinctions between the blend flags:
-   BLEND_IMAGE: the star on an image is matched with more 
-   than one star in the catalog (image has worse seeing than catalog)
-   BLEND_CATALOG: the star in the catalog is matched with more 
-   than one star on the image (image has better seeing than catalog)
-   CALIBRATED: relative photometry has been performed on this measurement
-   BLEND_IMAGE_NEIGHBOR: the star on an image is matched with more 
-   than one star in the catalog, but not in the same catalog file.
-*/
-
-/* Average.code values */
-# define ID_STAR_FEW   0x0001 /* used within relphot: skip star */
-# define ID_STAR_POOR  0x0002 /* used within relphot: skip star */
-# define ID_PROPER     0x0400 /* star with large proper motion */
-# define ID_TRANSIENT  0x1000 /* is this mutually exclusive with USNO?  */
-# define ID_VARIABLE   0x2000 /* not currently set? */
-# define ID_ASTEROID   0x2000 /* identified with an asteroid */
-# define ID_BAD_OBJECT 0x4000 /* if all measurements are bad, set this bit */
-# define ID_MOVING     0x8000
-# define ID_ROCK       0xa000 /* 0x8000 + 0x2000 */
-# define ID_GHOST      0xc001 /* 0x8000 + 0x4000 + 0x0001 */
-# define ID_TRAIL      0xc002 /* 0x8000 + 0x4000 + 0x0002 */
-# define ID_BLEED      0xc003 /* 0x8000 + 0x4000 + 0x0003 */ 
-# define ID_COSMIC     0xc004 /* 0x8000 + 0x4000 + 0x0004 */ 
-
-/*** general dvo structures (internal use only / not IO) ***/
-
-/* FITS DB structure */
-typedef struct {
-  FILE  *f;
-  char  *filename;
-  int    dbstate;
-  int    lockstate;
-  double timeout;
-  Header header;
-  Matrix matrix;
-  Header theader;
-  FTable ftable;
-  VTable vtable;
-  int    mode;          /* what data storage mode is used for disk file? */
-  int    format;        /* what data format is used for disk file? */
-  int    virtual;       /* is table in ftable or vtable? */
-  int    swapped;       /* is table in internal byte-order? */
-} FITS_DB;
-
-/* the basic HST GSC layout corresponds to a depth of 3 */
-# define SKY_DEPTH_HST 3
-
-/* SkyRegion : better implementation than GSCRegion */
-typedef struct {
-  int Nregions;
-  char **filename;
-  SkyRegion *regions;
-} SkyTable;
-
-typedef struct {
-  int Nregions;
-  char **filename;
-  SkyRegion **regions;
-} SkyList;
-
-# if (0)
-/* structure for data on a catalog region */
-typedef struct {
-  char filename[256];
-  double DEC[2], RA[2];
-} GSCRegion;
-# endif
-
-typedef struct {
-  int Ncode;
-  int Nsecfilt;
-  int hashcode[0x10000];
-  int hashNsec[0x10000];
-  PhotCode *code;
-} PhotCodeData;
-
-/* a catalog contains this data */
-typedef struct Catalog {
-  char *filename;			/* catalog file */
-  FILE *f;  				/* file descriptor */
-  Header  header;
-
-  /* data in the catalog file */
-  Average *average;
-  Measure *measure; 
-  Missing *missing; 
-  SecFilt *secfilt;
-  int Naverage, Nmeasure, Nmissing, Nsecfilt;   /* current number of each component */
-  int Nave_disk, Nmeas_disk, Nmiss_disk;        /* number of component on disk */
-  int Nmeas_off;			        /* dist seq of first loaded data value */
-  /* note the different counting for Nsecfilt */
-
-  /* pointers to split data files */
-  struct Catalog *measure_catalog;		/* measure catalog data (split) */
-  struct Catalog *missing_catalog;		/* missing catalog data (split) */
-  struct Catalog *secfilt_catalog;		/* secfilt catalog data (split) */
-
-  /* extra catalog information */
-  int lockmode;
-  int catmode;				/* storage mode (raw, mef, split, mysql) */
-  int catformat;			/* storage format (elixir, panstarrs, etc) */
-  int catflags;				/* choices to be loaded */
-  int sorted;				/* is measure table average-sorted? */
-  
-  /* pointers for data manipulation */
-  int *found;
-  int *image;
-  int *mosaic;
-  float *X;
-  float *Y;
-
-} Catalog;
-
-/*** prototypes ***/
-
-/* in gfits_db.c */
-int   gfits_db_init                PROTO((FITS_DB *db));
-int   gfits_db_create              PROTO((FITS_DB *db));
-int   gfits_db_lock                PROTO((FITS_DB *db, char *filename));
-int   gfits_db_load                PROTO((FITS_DB *db));
-int   gfits_db_load_segment        PROTO((FITS_DB *db, int start, int Nrows));
-int   gfits_db_save                PROTO((FITS_DB *db));
-int   gfits_db_update              PROTO((FITS_DB *db));
-int   gfits_db_close               PROTO((FITS_DB *db));
-int   gfits_db_free                PROTO((FITS_DB *db));
-
-/* in coords.c, using libautocode/def/coords.d */
-int  XY_to_RD (double *ra, double *dec, double x,  double y,   Coords *coords);
-int  RD_to_XY (double *x,  double *y,   double ra, double dec, Coords *coords);
-int  fXY_to_RD (float *ra, float *dec, double x,  double y,   Coords *coords);
-int  fRD_to_XY (float *x,  float *y,   double ra, double dec, Coords *coords);
-int  GetCoords (Coords *coords, Header *header);
-int  PutCoords (Coords *coords, Header *header);
-void RegisterMosaic (Coords *coords);
-void coords_precess (double *ra, double *dec, double in_epoch, double out_epoch);
-
-int FindMosaicForImage (Image *images, int Nimages, int entry);
-int FindMosaicForImage_TableSearch (Image *images, int Nimages, int entry);
-int FindMosaicForImage_MatchSearch (Image *images, int Nimages, int entry);
-int BuildChipMatch (Image *images, int Nimages);
-void SetImageCorners (double *X, double *Y, Image *image);
-
-short int putMi (double value);
-double getMi (short int value);
-void returnMcal (Image *image, double *c);
-void assignMcal (Image *image, double *c, int order);
-double applyMcal (Image *image, double x, double y);
-double findscatter (double *X, double *Y, double *M, double *dM, int N, double *c, int order);
-
-PhotCode *GetPhotcodebyName (char *name);
-PhotCode *GetPhotcodeEquivbyName (char *name);
-PhotCode *GetPhotcodebyCode (int code);
-PhotCode *GetPhotcodebyNsec (int Nsec);
-PhotCode *GetPhotcodeEquivbyCode (int code);
-char     *GetPhotcodeNamebyCode (int code);
-
-float PhotInst (Measure *measure);
-float PhotCat (Measure *measure);
-float PhotSys (Measure *measure, Average *average, SecFilt *secfilt);
-float PhotRel (Measure *measure, Average *average, SecFilt *secfilt);
-float PhotCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code);
-float PhotAve (PhotCode *code, Average *average, SecFilt *secfilt);
-float PhotRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure);
-float PhotXm (PhotCode *code, Average *average, SecFilt *secfilt);
-float PhotdM (PhotCode *code, Average *average, SecFilt *secfilt);
-
-# if (0)
-short iPhotInst (Measure *measure);
-short iPhotAbs (Measure *measure);
-short iPhotCat (Measure *measure);
-short iPhotSys (Measure *measure, Average *average, SecFilt *secfilt);
-short iPhotRel (Measure *measure, Average *average, SecFilt *secfilt);
-short iPhotCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code);
-short iPhotAve (PhotCode *code, Average *average, SecFilt *secfilt);
-short iPhotRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure);
-short iPhotXm (PhotCode *code, Average *average, SecFilt *secfilt);
-short iPhotdM (PhotCode *code, Average *average, SecFilt *secfilt);
-# endif
-
-float iPhotColor (Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code);
-int PhotColor (Average *average, SecFilt *secfilt, Measure *measure, int c1, int c2, double *color);
-
-int LoadPhotcodes (char *filename);
-int GetPhotcodeCodebyName (char *name);
-int GetPhotcodeEquivCodebyName (char *name);
-int GetPhotcodeEquivCodebyCode (int code);
-int GetPhotcodeNsec (int code);
-int GetPhotcodeNsecfilt (void);
-void SetZeroPoint (double ZP);
-int *GetPhotcodeEquivList (int code, int *nlist);
-void ParseColorTerms (char *terms, float *X, int *N);
-
-int get_image_type (char *name);
-char *get_type_name (int type);
-int get_image_mode (char *name);
-char *get_mode_name (int mode);
-
-/* these functions refer to the DVO structures defined in the includes above
- *  they are being replaced with autocode entries (drop when totally autocoded)
- */
-
-int   Fread (void *ptr, int size, int nitems, FILE *f, char *type);
-int   Fwrite (void *ptr, int size, int nitems, FILE *f, char *type);
-int   ByteSwap (char *ptr, int size, int nitems, char *type);
-int   ConvertStruct (char *buffer, int size, int Nbytes, char *type);
-
-/** dvo_catalog APIs */
-void dvo_catalog_init (Catalog *catalog, int complete);
-void dvo_catalog_create (SkyRegion *region, Catalog *catalog);
-void dvo_catalog_free (Catalog *catalog);
-int dvo_catalog_check (Catalog *catalog, int Nsecfilt, int extend);
-int dvo_catalog_lock (Catalog *catalog, int lockmode);
-int dvo_catalog_unlock (Catalog *catalog);
-int dvo_catalog_load (Catalog *catalog, int VERBOSE);
-int dvo_catalog_open (Catalog *catalog, SkyRegion *region, int VERBOSE, char *iomode);
-int dvo_catalog_save (Catalog *catalog, char VERBOSE);
-int dvo_catalog_update (Catalog *catalog, char VERBOSE);
-int dvo_catalog_catformat (char *catformat);
-int dvo_catalog_catmode (char *catmode);
-void dvo_catalog_test (Catalog *catalog, int halt);
-
-/* catmode-specific APIs */
-int dvo_catalog_load_raw (Catalog *catalog, int VERBOSE);
-int dvo_catalog_save_raw (Catalog *catalog, char VERBOSE);
-int dvo_catalog_load_mef (Catalog *catalog, int VERBOSE);
-int dvo_catalog_save_mef (Catalog *catalog, char VERBOSE);
-int dvo_catalog_load_split (Catalog *catalog, int VERBOSE);
-int dvo_catalog_save_split (Catalog *catalog, char VERBOSE);
-int dvo_catalog_update_split (Catalog *catalog, char VERBOSE);
-
-/*** conversion functions / I/O conversions ***/
-Average *ReadRawAverage (FILE *f, int Naverage, int format);
-Measure *ReadRawMeasure (FILE *f, int Nmeasure, int format);
-SecFilt *ReadRawSecFilt (FILE *f, int Nsecfilt, int format);
-int WriteRawAverage (FILE *f, Average *average, int Naverage, int format);
-int WriteRawMeasure (FILE *f, Measure *measure, int Nmeasure, int format);
-int WriteRawSecFilt (FILE *f, SecFilt *secfilt, int Nsecfilt, int format);
-
-Average *FtableToAverage (FTable *ftable, int *Naverage, int *format);
-Average *AverageLoneosToInternal (AverageLoneos *in, int Nvalues);
-Average *AverageElixirToInternal (AverageElixir *in, int Nvalues);
-Average *AveragePanstarrsToInternal (AveragePanstarrs *in, int Nvalues);
-Average *AveragePMtestToInternal (AveragePMtest *in, int Nvalues);
-AverageLoneos *AverageInternalToLoneos (Average *in, int Nvalues);
-AverageElixir *AverageInternalToElixir (Average *in, int Nvalues);
-AveragePanstarrs *AverageInternalToPanstarrs (Average *in, int Nvalues);
-AveragePMtest *AverageInternalToPMtest (Average *in, int Nvalues);
-
-Measure *FtableToMeasure (FTable *ftable, int *Nmeasure, int *format);
-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 *FtableToSecFilt (FTable *ftable, int *Nsecfilt, int *format);
-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);
-
-int AverageToFtable (FTable *ftable, Average *average, int Naverage, int format);
-int MeasureToFtable (FTable *ftable, Measure *measure, int Nmeasure, int format);
-int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, int Nsecfilt, int format);
-
-/*** DVO image db I/O Functions ***/
-int dvo_image_lock (FITS_DB *db, char *filename, double timeout, int lockstate);
-int dvo_image_unlock (FITS_DB *db);
-int dvo_image_load (FITS_DB *db, int VERBOSE, int FORCE_READ);
-int dvo_image_save (FITS_DB *db, int VERBOSE);
-int dvo_image_update (FITS_DB *db, int VERBOSE);
-int dvo_image_load_raw (FITS_DB *db, int VERBOSE, int FORCE_READ);
-int dvo_image_update_raw (FITS_DB *db, int VERBOSE);
-int dvo_image_save_raw (FITS_DB *db, int VERBOSE);
-int dvo_image_addrows (FITS_DB *db, Image *new, int Nnew);
-void dvo_image_create (FITS_DB *db, double ZeroPoint);
-
-int FtableToImage (FTable *ftable, Header *theader, int *format);
-int ImageToFtable (FTable *ftable, Header *theader, int format);
-int ImageToVtable (VTable *vtable, Header *theader, int format);
-Image *ImageElixirToInternal (ImageElixir *in, int Nvalues);
-ImageElixir *ImageInternalToElixir (Image *in, int Nvalues);
-Image *ImageLoneosToInternal (ImageLoneos *in, int Nvalues);
-ImageLoneos *ImageInternalToLoneos (Image *in, int Nvalues);
-Image *ImagePanstarrsToInternal (ImagePanstarrs *in, int Nvalues);
-ImagePanstarrs *ImageInternalToPanstarrs (Image *in, int Nvalues);
-
-/* skyregion APIs */
-int        SkyTableSave        	   PROTO((SkyTable *table, char *filename));
-SkyTable  *SkyTableLoad        	   PROTO((char *filename, int VERBOSE));
-SkyTable  *SkyTableFromGSC     	   PROTO((char *filename, int depth, int VERBOSE));
-SkyTable  *SkyTableLoadOptimal 	   PROTO((char *catdir, char *SKYFILE, char *GSCFILE, int depth, int VERBOSE));
-int        SkyTableSetDepth    	   PROTO((SkyTable *sky, int depth));
-SkyList   *SkyRegionByPoint    	   PROTO((SkyTable *table, int depth, double ra, double dec));
-SkyList   *SkyListByPoint      	   PROTO((SkyTable *table, double ra, double dec));
-SkyList   *SkyListByRadius     	   PROTO((SkyTable *table, int depth, double RA, double DEC, double radius));
-SkyList   *SkyListByPatch      	   PROTO((SkyTable *table, int depth, SkyRegion *patch));
-SkyList   *SkyListByName      	   PROTO((SkyTable *table, char *name));
-SkyList   *SkyListByImage      	   PROTO((SkyTable *table, int depth, Image *image));
-SkyList   *SkyListByBounds     	   PROTO((SkyTable *table, int depth, double Rmin, double Rmax, double Dmin, double Dmax));
-SkyList   *SkyListChildrenByBounds PROTO((SkyTable *table, int No, int depth, double Rmin, double Rmax, double Dmin, double Dmax));
-int        SkyListFree             PROTO((SkyList *list, int ELEMENTS));
-int        SkyTableFree            PROTO((SkyTable *table));
-int        SkyListSetFilenames     PROTO((SkyList *list, char *path, char *ext));
-int        SkyTableSetFilenames    PROTO((SkyTable *sky, char *path, char *ext));
-
-# endif
Index: trunk/Ohana/src/libdvo/include/dvo_util.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvo_util.h	(revision 27025)
+++ trunk/Ohana/src/libdvo/include/dvo_util.h	(revision 27435)
@@ -9,19 +9,19 @@
 
 typedef struct {
-    char        gscfile[256];
-    char        catdir[256];
-    char        catmode[256];
-    char        catformat[256];
-    char        photcodeFile[256];
-    char        skyTableFile[256];
-    int         skyDepth;
-    FITS_DB     imageDB;
-    Image       *images;
-    int         nImages;
-    SkyTable    *skyTable;
+  char        gscfile[256];
+  char        catdir[256];
+  char        catmode[256];
+  char        catformat[256];
+  char        photcodeFile[256];
+  char        skyTableFile[256];
+  int         skyDepth;
+  FITS_DB     imageDB;
+  Image      *images;
+  off_t       nImages;
+  SkyTable   *skyTable;
 #if (DVO_UTIL_READ_CAMERA_CONFIG)
-    char        cameraConfig[256];
-    int         *ccdNum;
-    int         nCCD;
+  char        cameraConfig[256];
+  int        *ccdNum;
+  int         nCCD;
 #endif
 } dvoConfig;
@@ -29,13 +29,13 @@
 // This structure needs to be fleshed out
 typedef struct {
-    int         valid;
-    Average     ave;
-    Measure     meas;
+  int         valid;
+  Average     ave;
+  Measure     meas;
 #ifdef notdef
-    int         objID;
-    int         catID;
-    int         detID;
-    uint64_t    pspsObjID;
-    uint64_t    pspsDetID;
+  int         objID;
+  int         catID;
+  int         detID;
+  uint64_t    pspsObjID;
+  uint64_t    pspsDetID;
 #endif
 } dvoDetection;
@@ -52,5 +52,5 @@
 dvoConfig *dvoConfigRead(int *argc, char **argv);
 
-// free's memory associated with the dvoConfig structure
+// frees memory associated with the dvoConfig structure
 void dvoConfigFree(dvoConfig *dvoConfig);
 
@@ -70,7 +70,7 @@
 SkyList *dvoSkyListByExternID(dvoConfig *dvoConfig, int sourceID, int externID, Image **ppImage);
 
-// return a list of detectsions from a particular image id
+// return a list of detections from a particular image id
 // Use dvoFree() to free the memory pointed to by results
-int dvoGetDetections(SkyList *skylist, int imageID, dvoDetection **results, int *pMaxDetID);
+off_t dvoGetDetections(SkyList *skylist, int imageID, dvoDetection **results, int *pMaxDetID);
 
 // free memory returned by various dvo util functions
Index: trunk/Ohana/src/libdvo/include/elixir_defs.h
===================================================================
--- trunk/Ohana/src/libdvo/include/elixir_defs.h	(revision 27025)
+++ trunk/Ohana/src/libdvo/include/elixir_defs.h	(revision 27435)
@@ -1,11 +1,11 @@
-Image 		       	*Image_Elixir_ToInternal (Image_Elixir *in, int Nvalues);
-Image_Elixir 	       	*ImageInternalTo_Elixir (Image *in, int Nvalues);
-Average 	       	*Average_Elixir_ToInternal (Average_Elixir *in, int Nvalues, SecFilt **primary);
-Average_Elixir 	        *AverageInternalTo_Elixir (Average *in, int Nvalues, SecFilt *primary);
-Measure 	       	*Measure_Elixir_ToInternal (Measure_Elixir *in, int Nvalues);
-Measure_Elixir 	        *MeasureInternalTo_Elixir (Measure *in, int Nvalues);
-SecFilt 	       	*SecFilt_Elixir_ToInternal (SecFilt_Elixir *in, int Nvalues);
-SecFilt_Elixir 	       	*SecFiltInternalTo_Elixir (SecFilt *in, int Nvalues);
+Image 		       	*Image_Elixir_ToInternal (Image_Elixir *in, off_t Nvalues);
+Image_Elixir 	       	*ImageInternalTo_Elixir (Image *in, off_t Nvalues);
+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);
+SecFilt 	       	*SecFilt_Elixir_ToInternal (SecFilt_Elixir *in, off_t Nvalues);
+SecFilt_Elixir 	       	*SecFiltInternalTo_Elixir (SecFilt *in, off_t Nvalues);
 
-PhotCode *PhotCode_Elixir_To_Internal (PhotCode_Elixir *in, int Nvalues);
-PhotCode_Elixir *PhotCode_Internal_To_Elixir (PhotCode *in, int Nvalues);
+PhotCode *PhotCode_Elixir_To_Internal (PhotCode_Elixir *in, off_t Nvalues);
+PhotCode_Elixir *PhotCode_Internal_To_Elixir (PhotCode *in, off_t Nvalues);
Index: trunk/Ohana/src/libdvo/include/loneos_defs.h
===================================================================
--- trunk/Ohana/src/libdvo/include/loneos_defs.h	(revision 27025)
+++ trunk/Ohana/src/libdvo/include/loneos_defs.h	(revision 27435)
@@ -1,8 +1,8 @@
-Image 		       	*Image_Loneos_ToInternal (Image_Loneos *in, int Nvalues);
-Image_Loneos 	       	*ImageInternalTo_Loneos (Image *in, int Nvalues);
-Average                	*Average_Loneos_ToInternal (Average_Loneos *in, int Nvalues, SecFilt **primary);
-Average_Loneos 	        *AverageInternalTo_Loneos (Average *in, int Nvalues, SecFilt *primary);
-Measure                	*Measure_Loneos_ToInternal (Measure_Loneos *in, int Nvalues);
-Measure_Loneos 	        *MeasureInternalTo_Loneos (Measure *in, int Nvalues);
-SecFilt 	       	*SecFilt_Loneos_ToInternal (SecFilt_Loneos *in, int Nvalues);
-SecFilt_Loneos 	       	*SecFiltInternalTo_Loneos (SecFilt *in, int Nvalues);
+Image 		       	*Image_Loneos_ToInternal (Image_Loneos *in, off_t Nvalues);
+Image_Loneos 	       	*ImageInternalTo_Loneos (Image *in, off_t Nvalues);
+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);
+SecFilt 	       	*SecFilt_Loneos_ToInternal (SecFilt_Loneos *in, off_t Nvalues);
+SecFilt_Loneos 	       	*SecFiltInternalTo_Loneos (SecFilt *in, off_t Nvalues);
Index: trunk/Ohana/src/libdvo/include/panstarrs_dev_0_defs.h
===================================================================
--- trunk/Ohana/src/libdvo/include/panstarrs_dev_0_defs.h	(revision 27025)
+++ trunk/Ohana/src/libdvo/include/panstarrs_dev_0_defs.h	(revision 27435)
@@ -1,8 +1,8 @@
-Image 		       	*Image_Panstarrs_DEV_0_ToInternal (Image_Panstarrs_DEV_0 *in, int Nvalues);
-Image_Panstarrs_DEV_0  	*ImageInternalTo_Panstarrs_DEV_0 (Image *in, int Nvalues);
-Average 	       	*Average_Panstarrs_DEV_0_ToInternal (Average_Panstarrs_DEV_0 *in, int Nvalues, SecFilt **primary);
-Average_Panstarrs_DEV_0 *AverageInternalTo_Panstarrs_DEV_0 (Average *in, int Nvalues, SecFilt *primary);
-Measure 	       	*Measure_Panstarrs_DEV_0_ToInternal (Measure_Panstarrs_DEV_0 *in, int Nvalues);
-Measure_Panstarrs_DEV_0 *MeasureInternalTo_Panstarrs_DEV_0 (Measure *in, int Nvalues);
-SecFilt 	       	*SecFilt_Panstarrs_DEV_0_ToInternal (SecFilt_Panstarrs_DEV_0 *in, int Nvalues);
-SecFilt_Panstarrs_DEV_0 *SecFiltInternalTo_Panstarrs_DEV_0 (SecFilt *in, int Nvalues);
+Image 		       	*Image_Panstarrs_DEV_0_ToInternal (Image_Panstarrs_DEV_0 *in, off_t Nvalues);
+Image_Panstarrs_DEV_0  	*ImageInternalTo_Panstarrs_DEV_0 (Image *in, off_t Nvalues);
+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);
+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: trunk/Ohana/src/libdvo/include/panstarrs_dev_1_defs.h
===================================================================
--- trunk/Ohana/src/libdvo/include/panstarrs_dev_1_defs.h	(revision 27025)
+++ trunk/Ohana/src/libdvo/include/panstarrs_dev_1_defs.h	(revision 27435)
@@ -1,8 +1,8 @@
-Image 		       	*Image_Panstarrs_DEV_1_ToInternal (Image_Panstarrs_DEV_1 *in, int Nvalues);
-Image_Panstarrs_DEV_1  	*ImageInternalTo_Panstarrs_DEV_1 (Image *in, int Nvalues);
-Average 	       	*Average_Panstarrs_DEV_1_ToInternal (Average_Panstarrs_DEV_1 *in, int Nvalues, SecFilt **primary);
-Average_Panstarrs_DEV_1 *AverageInternalTo_Panstarrs_DEV_1 (Average *in, int Nvalues, SecFilt *primary);
-Measure 	       	*Measure_Panstarrs_DEV_1_ToInternal (Measure_Panstarrs_DEV_1 *in, int Nvalues);
-Measure_Panstarrs_DEV_1 *MeasureInternalTo_Panstarrs_DEV_1 (Measure *in, int Nvalues);
-SecFilt 	       	*SecFilt_Panstarrs_DEV_1_ToInternal (SecFilt_Panstarrs_DEV_1 *in, int Nvalues);
-SecFilt_Panstarrs_DEV_1 *SecFiltInternalTo_Panstarrs_DEV_1 (SecFilt *in, int Nvalues);
+Image 		       	*Image_Panstarrs_DEV_1_ToInternal (Image_Panstarrs_DEV_1 *in, off_t Nvalues);
+Image_Panstarrs_DEV_1  	*ImageInternalTo_Panstarrs_DEV_1 (Image *in, off_t Nvalues);
+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);
+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: trunk/Ohana/src/libdvo/include/ps1_dev_1_defs.h
===================================================================
--- trunk/Ohana/src/libdvo/include/ps1_dev_1_defs.h	(revision 27025)
+++ trunk/Ohana/src/libdvo/include/ps1_dev_1_defs.h	(revision 27435)
@@ -1,11 +1,11 @@
-Image 		       	*Image_PS1_DEV_1_ToInternal (Image_PS1_DEV_1 *in, int Nvalues);
-Image_PS1_DEV_1  	*ImageInternalTo_PS1_DEV_1 (Image *in, int Nvalues);
-Average 	       	*Average_PS1_DEV_1_ToInternal (Average_PS1_DEV_1 *in, int Nvalues, SecFilt **primary);
-Average_PS1_DEV_1       *AverageInternalTo_PS1_DEV_1 (Average *in, int Nvalues, SecFilt *primary);
-Measure 	       	*Measure_PS1_DEV_1_ToInternal (Measure_PS1_DEV_1 *in, int Nvalues);
-Measure_PS1_DEV_1       *MeasureInternalTo_PS1_DEV_1 (Measure *in, int Nvalues);
-SecFilt 	       	*SecFilt_PS1_DEV_1_ToInternal (SecFilt_PS1_DEV_1 *in, int Nvalues);
-SecFilt_PS1_DEV_1       *SecFiltInternalTo_PS1_DEV_1 (SecFilt *in, int Nvalues);
+Image 		       	*Image_PS1_DEV_1_ToInternal (Image_PS1_DEV_1 *in, off_t Nvalues);
+Image_PS1_DEV_1  	*ImageInternalTo_PS1_DEV_1 (Image *in, off_t Nvalues);
+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);
+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);
 
-PhotCode *PhotCode_PS1_DEV_1_To_Internal (PhotCode_PS1_DEV_1 *in, int Nvalues);
-PhotCode_PS1_DEV_1 *PhotCode_Internal_To_PS1_DEV_1 (PhotCode *in, int Nvalues);
+PhotCode *PhotCode_PS1_DEV_1_To_Internal (PhotCode_PS1_DEV_1 *in, off_t Nvalues);
+PhotCode_PS1_DEV_1 *PhotCode_Internal_To_PS1_DEV_1 (PhotCode *in, off_t Nvalues);
Index: trunk/Ohana/src/libdvo/include/ps1_dev_2_defs.h
===================================================================
--- trunk/Ohana/src/libdvo/include/ps1_dev_2_defs.h	(revision 27025)
+++ trunk/Ohana/src/libdvo/include/ps1_dev_2_defs.h	(revision 27435)
@@ -1,11 +1,11 @@
-Image 		       	*Image_PS1_DEV_2_ToInternal (Image_PS1_DEV_2 *in, int Nvalues);
-Image_PS1_DEV_2  	*ImageInternalTo_PS1_DEV_2 (Image *in, int Nvalues);
-Average 	       	*Average_PS1_DEV_2_ToInternal (Average_PS1_DEV_2 *in, int Nvalues, SecFilt **primary);
-Average_PS1_DEV_2       *AverageInternalTo_PS1_DEV_2 (Average *in, int Nvalues, SecFilt *primary);
-Measure 	       	*Measure_PS1_DEV_2_ToInternal (Measure_PS1_DEV_2 *in, int Nvalues);
-Measure_PS1_DEV_2       *MeasureInternalTo_PS1_DEV_2 (Measure *in, int Nvalues);
-SecFilt 	       	*SecFilt_PS1_DEV_2_ToInternal (SecFilt_PS1_DEV_2 *in, int Nvalues);
-SecFilt_PS1_DEV_2       *SecFiltInternalTo_PS1_DEV_2 (SecFilt *in, int Nvalues);
+Image 		       	*Image_PS1_DEV_2_ToInternal (Image_PS1_DEV_2 *in, off_t Nvalues);
+Image_PS1_DEV_2  	*ImageInternalTo_PS1_DEV_2 (Image *in, off_t Nvalues);
+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);
+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);
 
-PhotCode *PhotCode_PS1_DEV_2_To_Internal (PhotCode_PS1_DEV_2 *in, int Nvalues);
-PhotCode_PS1_DEV_2 *PhotCode_Internal_To_PS1_DEV_2 (PhotCode *in, int Nvalues);
+PhotCode *PhotCode_PS1_DEV_2_To_Internal (PhotCode_PS1_DEV_2 *in, off_t Nvalues);
+PhotCode_PS1_DEV_2 *PhotCode_Internal_To_PS1_DEV_2 (PhotCode *in, off_t Nvalues);
Index: trunk/Ohana/src/libdvo/include/ps1_dev_3_defs.h
===================================================================
--- trunk/Ohana/src/libdvo/include/ps1_dev_3_defs.h	(revision 27025)
+++ trunk/Ohana/src/libdvo/include/ps1_dev_3_defs.h	(revision 27435)
@@ -1,5 +1,5 @@
-Image 		       	*Image_PS1_DEV_3_ToInternal (Image_PS1_DEV_3 *in, int Nvalues);
-Image_PS1_DEV_3  	*ImageInternalTo_PS1_DEV_3 (Image *in, int Nvalues);
+Image 		       	*Image_PS1_DEV_3_ToInternal (Image_PS1_DEV_3 *in, off_t Nvalues);
+Image_PS1_DEV_3  	*ImageInternalTo_PS1_DEV_3 (Image *in, off_t Nvalues);
 
-PhotCode *PhotCode_PS1_DEV_3_To_Internal (PhotCode_PS1_DEV_3 *in, int Nvalues);
-PhotCode_PS1_DEV_3 *PhotCode_Internal_To_PS1_DEV_3 (PhotCode *in, int Nvalues);
+PhotCode *PhotCode_PS1_DEV_3_To_Internal (PhotCode_PS1_DEV_3 *in, off_t Nvalues);
+PhotCode_PS1_DEV_3 *PhotCode_Internal_To_PS1_DEV_3 (PhotCode *in, off_t Nvalues);
Index: trunk/Ohana/src/libdvo/include/ps1_ref_defs.h
===================================================================
--- trunk/Ohana/src/libdvo/include/ps1_ref_defs.h	(revision 27025)
+++ trunk/Ohana/src/libdvo/include/ps1_ref_defs.h	(revision 27435)
@@ -1,11 +1,11 @@
-Image 		       	*Image_PS1_REF_ToInternal (Image_PS1_REF *in, int Nvalues);
-Image_PS1_REF    	*ImageInternalTo_PS1_REF (Image *in, int Nvalues);
-Average 	       	*Average_PS1_REF_ToInternal (Average_PS1_REF *in, int Nvalues, SecFilt **primary);
-Average_PS1_REF          *AverageInternalTo_PS1_REF (Average *in, int Nvalues, SecFilt *primary);
-Measure 	       	*Measure_PS1_REF_ToInternal (Measure_PS1_REF *in, int Nvalues);
-Measure_PS1_REF          *MeasureInternalTo_PS1_REF (Measure *in, int Nvalues);
-SecFilt 	       	*SecFilt_PS1_REF_ToInternal (SecFilt_PS1_REF *in, int Nvalues);
-SecFilt_PS1_REF          *SecFiltInternalTo_PS1_REF (SecFilt *in, int Nvalues);
+Image 		       	*Image_PS1_REF_ToInternal (Image_PS1_REF *in, off_t Nvalues);
+Image_PS1_REF    	*ImageInternalTo_PS1_REF (Image *in, off_t Nvalues);
+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);
+SecFilt 	       	*SecFilt_PS1_REF_ToInternal (SecFilt_PS1_REF *in, off_t Nvalues);
+SecFilt_PS1_REF          *SecFiltInternalTo_PS1_REF (SecFilt *in, off_t Nvalues);
 
-PhotCode                *PhotCode_PS1_REF_To_Internal (PhotCode_PS1_REF *in, int Nvalues);
-PhotCode_PS1_REF         *PhotCode_Internal_To_PS1_REF (PhotCode *in, int Nvalues);
+PhotCode                *PhotCode_PS1_REF_To_Internal (PhotCode_PS1_REF *in, off_t Nvalues);
+PhotCode_PS1_REF         *PhotCode_Internal_To_PS1_REF (PhotCode *in, off_t Nvalues);
Index: trunk/Ohana/src/libdvo/include/ps1_v1_defs.h
===================================================================
--- trunk/Ohana/src/libdvo/include/ps1_v1_defs.h	(revision 27025)
+++ trunk/Ohana/src/libdvo/include/ps1_v1_defs.h	(revision 27435)
@@ -1,11 +1,11 @@
-Image 		       	*Image_PS1_V1_ToInternal (Image_PS1_V1 *in, int Nvalues);
-Image_PS1_V1    	*ImageInternalTo_PS1_V1 (Image *in, int Nvalues);
-Average 	       	*Average_PS1_V1_ToInternal (Average_PS1_V1 *in, int Nvalues, SecFilt **primary);
-Average_PS1_V1          *AverageInternalTo_PS1_V1 (Average *in, int Nvalues, SecFilt *primary);
-Measure 	       	*Measure_PS1_V1_ToInternal (Measure_PS1_V1 *in, int Nvalues);
-Measure_PS1_V1          *MeasureInternalTo_PS1_V1 (Measure *in, int Nvalues);
-SecFilt 	       	*SecFilt_PS1_V1_ToInternal (SecFilt_PS1_V1 *in, int Nvalues);
-SecFilt_PS1_V1          *SecFiltInternalTo_PS1_V1 (SecFilt *in, int Nvalues);
+Image 		       	*Image_PS1_V1_ToInternal (Image_PS1_V1 *in, off_t Nvalues);
+Image_PS1_V1    	*ImageInternalTo_PS1_V1 (Image *in, off_t Nvalues);
+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);
+SecFilt 	       	*SecFilt_PS1_V1_ToInternal (SecFilt_PS1_V1 *in, off_t Nvalues);
+SecFilt_PS1_V1          *SecFiltInternalTo_PS1_V1 (SecFilt *in, off_t Nvalues);
 
-PhotCode                *PhotCode_PS1_V1_To_Internal (PhotCode_PS1_V1 *in, int Nvalues);
-PhotCode_PS1_V1         *PhotCode_Internal_To_PS1_V1 (PhotCode *in, int Nvalues);
+PhotCode                *PhotCode_PS1_V1_To_Internal (PhotCode_PS1_V1 *in, off_t Nvalues);
+PhotCode_PS1_V1         *PhotCode_Internal_To_PS1_V1 (PhotCode *in, off_t Nvalues);
Index: trunk/Ohana/src/libdvo/src/LoadPhotcodesFITS.c
===================================================================
--- trunk/Ohana/src/libdvo/src/LoadPhotcodesFITS.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/LoadPhotcodesFITS.c	(revision 27435)
@@ -11,5 +11,6 @@
   char extname[80];
 
-  int i, code, Ncode, Nsec, Nsecfilt;
+  int i, code, Nsec, Nsecfilt;
+  off_t Ncode;
 
   /* XXX choose more sensible lock timeouts! */
Index: trunk/Ohana/src/libdvo/src/cmf-ps1-v1-alt.c
===================================================================
--- trunk/Ohana/src/libdvo/src/cmf-ps1-v1-alt.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/cmf-ps1-v1-alt.c	(revision 27435)
@@ -1,7 +1,7 @@
 # include "dvo.h"
 
-CMF_PS1_V2 *gfits_table_get_CMF_PS1_V1_Alt (FTable *ftable, int *Ndata, int *swapped) {
+CMF_PS1_V2 *gfits_table_get_CMF_PS1_V1_Alt (FTable *ftable, off_t *Ndata, char *swapped) {
 
-  int i, nitems;
+  off_t i, nitems;
   unsigned char *byte, *inbyte, *otbyte, tmp;
   CMF_PS1_V2 *output;
@@ -13,5 +13,5 @@
   // this function is a special case : it must have Nx = 136
   if (ftable[0].header[0].Naxis[0] != 136) { 
-    fprintf (stderr, "ERROR: wrong format for CMF_PS1_V1_Alt: %d vs %d\n", ftable[0].header[0].Naxis[0], 136);
+    fprintf (stderr, "ERROR: wrong format for CMF_PS1_V1_Alt: %lld vs %d\n", (long long) ftable[0].header[0].Naxis[0], 136);
     exit (2);
   }
@@ -83,5 +83,5 @@
 
   free (ftable[0].buffer);
-  ftable[0].buffer = output;
+  ftable[0].buffer = (char *) output;
 
   // XXX other mods to make ftable consistent with CMF_PS1_V2? (Nx, EXTNAME?)
Index: trunk/Ohana/src/libdvo/src/coordops.c
===================================================================
--- trunk/Ohana/src/libdvo/src/coordops.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/coordops.c	(revision 27435)
@@ -307,5 +307,5 @@
   int i;
   double Ro, Xo, Yo;
-  double dX, dY, X, Y, Lo, Mo, dL, dM;
+  double dX, dY, Lo, Mo, dL, dM;
   double dLdX, dLdY, dMdX, dMdY, Do;
 
Index: trunk/Ohana/src/libdvo/src/dvo_catalog.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_catalog.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_catalog.c	(revision 27435)
@@ -141,5 +141,5 @@
   if (catalog[0].f == NULL)   return (DVO_CAT_OPEN_FAIL);
 
-  fseek (catalog[0].f, 0, SEEK_SET);
+  fseeko (catalog[0].f, 0, SEEK_SET);
   return (DVO_CAT_OPEN_OK);
 }
@@ -253,5 +253,5 @@
   }
   // check if the table has been sorted or not 
-  status = gfits_scan (&catalog[0].header, "SORTED", "%t", 1, &catalog[0].sorted);
+  status = gfits_scan_alt (&catalog[0].header, "SORTED", "%t", 1, &catalog[0].sorted);
   if (!status) catalog[0].sorted = TRUE;
 
@@ -302,5 +302,5 @@
 
   // set the 'sorted' header keyword
-  gfits_modify (&catalog[0].header, "SORTED",  "%t", 1, catalog[0].sorted);
+  gfits_modify_alt (&catalog[0].header, "SORTED",  "%t", 1, catalog[0].sorted);
 
   // XXX handle return status
@@ -327,5 +327,5 @@
 
   // set the 'sorted' header keyword
-  gfits_modify (&catalog[0].header, "SORTED",  "%t", 1, catalog[0].sorted);
+  gfits_modify_alt (&catalog[0].header, "SORTED",  "%t", 1, catalog[0].sorted);
 
   // XXX handle return status
@@ -353,5 +353,5 @@
   // set the 'sorted' header keyword
   catalog[0].sorted = FALSE;
-  gfits_modify (&catalog[0].header, "SORTED",  "%t", 1, catalog[0].sorted);
+  gfits_modify_alt (&catalog[0].header, "SORTED",  "%t", 1, catalog[0].sorted);
 
   /* update is only valid for catmode SPLIT */
@@ -376,5 +376,6 @@
 int dvo_catalog_check (Catalog *catalog, int Nsecfilt, int extend) {
 
-  int i, j, Nextra, in, out;
+  off_t in, out, i;
+  int j, Nextra;
   SecFilt *insec, *outsec;
 
@@ -409,5 +410,25 @@
 
 void dvo_catalog_free (Catalog *catalog) {
+
+  if (catalog[0].catmode == DVO_MODE_SPLIT) {
+
+    if (catalog[0].measure_catalog) {
+      free (catalog[0].measure_catalog[0].filename);
+      dvo_catalog_free (catalog[0].measure_catalog);
+      free (catalog[0].measure_catalog);
+    }
+    if (catalog[0].missing_catalog) {
+      free (catalog[0].missing_catalog[0].filename);
+      dvo_catalog_free (catalog[0].missing_catalog);
+      free (catalog[0].missing_catalog);
+    }
+    if (catalog[0].secfilt_catalog) {
+      free (catalog[0].secfilt_catalog[0].filename);
+      dvo_catalog_free (catalog[0].secfilt_catalog);
+      free (catalog[0].secfilt_catalog);
+    }
+  }
   dvo_catalog_free_data (catalog);
+
   gfits_free_header (&catalog[0].header);
 }
@@ -444,5 +465,5 @@
 */
 
-int dvo_catalog_load_segment (Catalog *catalog, int VERBOSE, int start, int Nrows) {
+int dvo_catalog_load_segment (Catalog *catalog, int VERBOSE, off_t start, off_t Nrows) {
 
   switch (catalog[0].catmode) {
Index: trunk/Ohana/src/libdvo/src/dvo_catalog_create.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_catalog_create.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_catalog_create.c	(revision 27435)
@@ -27,5 +27,5 @@
   }
   gfits_create_header (&catalog[0].header);
-  
+
   if (catalog[0].catmode == DVO_MODE_SPLIT) {
     path = pathname (catalog[0].filename);
@@ -39,5 +39,7 @@
     /* create basic data for measure catalog file */
     gfits_create_header (&catalog[0].measure_catalog[0].header);
+
     ALLOCATE (catalog[0].measure_catalog[0].filename, char, length);
+
     sprintf (catalog[0].measure_catalog[0].filename, "%s/%s.cpm", path, root);
     file = filebasename (catalog[0].measure_catalog[0].filename);
@@ -85,5 +87,4 @@
       exit (2);
     }
-
   }    
 
Index: trunk/Ohana/src/libdvo/src/dvo_catalog_mef.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_catalog_mef.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_catalog_mef.c	(revision 27435)
@@ -3,5 +3,6 @@
 int dvo_catalog_load_mef (Catalog *catalog, int VERBOSE) {
   
-  int Nitems, Nbytes, Nexpect, Naverage, Nmeasure, Nmissing, Nsecfilt;
+  int Nsecfilt;
+  off_t Nitems, Nbytes, Nexpect, Naverage, Nmeasure, Nmissing;
   FILE *f;
 
@@ -15,5 +16,5 @@
 
   /* move pointer past header -- must be already read (load_catalog) */
-  fseek (f, catalog[0].header.size, SEEK_SET);
+  fseeko (f, catalog[0].header.datasize, SEEK_SET);
 
   /* matrix should be empty */
@@ -23,8 +24,8 @@
   }
   /* get the components from the header */
-  if (!gfits_scan (&catalog[0].header, "NSTARS",   "%d", 1, &Naverage)) return (FALSE);
-  if (!gfits_scan (&catalog[0].header, "NMEAS",    "%d", 1, &Nmeasure)) return (FALSE);
-  if (!gfits_scan (&catalog[0].header, "NMISS",    "%d", 1, &Nmissing)) return (FALSE);
-  if (!gfits_scan (&catalog[0].header, "NSECFILT", "%d", 1, &Nsecfilt)) Nsecfilt = 0;
+  if (!gfits_scan (&catalog[0].header, "NSTARS",   "%lld", 1, (long long *) &Naverage)) return (FALSE);
+  if (!gfits_scan (&catalog[0].header, "NMEAS",    "%lld", 1, (long long *) &Nmeasure)) return (FALSE);
+  if (!gfits_scan (&catalog[0].header, "NMISS",    "%lld", 1, (long long *) &Nmissing)) return (FALSE);
+  if (!gfits_scan (&catalog[0].header, "NSECFILT", "%d",   1,               &Nsecfilt)) Nsecfilt = 0;
 
   /* the OBJID is a counter that uniquely defines an average entry and never changes.  if
@@ -72,5 +73,5 @@
     catalog[0].average = FtableToAverage (&ftable, &Naverage, &catalog[0].catformat, &primary);
     if (Naverage != catalog[0].Naves_disk) {
-      fprintf (stderr, "Warning: mismatch between Naverage in PHU and Table headers (%d vs %d)\n", Naverage, catalog[0].Naves_disk);
+      fprintf (stderr, "Warning: mismatch between Naverage in PHU and Table headers (%lld vs %lld)\n", (long long) Naverage, (long long) catalog[0].Naves_disk);
     }
     catalog[0].Naverage = catalog[0].Naves_disk;
@@ -78,5 +79,5 @@
   } else {
     Nbytes = gfits_data_size (&header);
-    fseek (f, Nbytes, SEEK_CUR);
+    fseeko (f, Nbytes, SEEK_CUR);
     ALLOCATE (catalog[0].average, Average, 1);
     catalog[0].Naverage = 0;
@@ -99,5 +100,5 @@
     catalog[0].measure = FtableToMeasure (&ftable, &catalog[0].Nmeasure, &catalog[0].catformat);
     if (Nmeasure != catalog[0].Nmeas_disk) {
-      fprintf (stderr, "Warning: mismatch between Nmeasure in PHU and Table headers (%d vs %d)\n", Nmeasure, catalog[0].Nmeas_disk);
+      fprintf (stderr, "Warning: mismatch between Nmeasure in PHU and Table headers (%lld vs %lld)\n", (long long) Nmeasure, (long long) catalog[0].Nmeas_disk);
     }
     catalog[0].Nmeasure = catalog[0].Nmeas_disk;
@@ -105,5 +106,5 @@
   } else {
     Nbytes = gfits_data_size (&header);
-    fseek (f, Nbytes, SEEK_CUR);
+    fseeko (f, Nbytes, SEEK_CUR);
     ALLOCATE (catalog[0].measure, Measure, 1);
     catalog[0].Nmeasure = 0;
@@ -125,5 +126,5 @@
     catalog[0].missing = gfits_table_get_Missing (&ftable, &catalog[0].Nmissing, NULL);
     if (Nmissing != catalog[0].Nmiss_disk) {
-      fprintf (stderr, "Warning: mismatch between Nmissing in PHU and Table headers (%d vs %d)\n", Nmissing, catalog[0].Nmiss_disk);
+      fprintf (stderr, "Warning: mismatch between Nmissing in PHU and Table headers (%lld vs %lld)\n", (long long) Nmissing, (long long) catalog[0].Nmiss_disk);
     }
     catalog[0].Nmissing = catalog[0].Nmiss_disk;
@@ -131,5 +132,5 @@
   } else {
     Nbytes = gfits_data_size (&header);
-    fseek (f, Nbytes, SEEK_CUR);
+    fseeko (f, Nbytes, SEEK_CUR);
     ALLOCATE (catalog[0].missing, Missing, 1);
     catalog[0].Nmissing = 0;
@@ -153,5 +154,5 @@
     catalog[0].secfilt = FtableToSecFilt (&ftable, &Nitems, &catalog[0].catformat);
     if (Nexpect != Nitems) {
-      fprintf (stderr, "Warning: mismatch between Nsecfilt items in PHU and Table headers (%d vs %d)\n", Nexpect, Nitems);
+      fprintf (stderr, "Warning: mismatch between Nsecfilt items in PHU and Table headers (%lld vs %lld)\n", (long long) Nexpect, (long long) Nitems);
     }
 
@@ -159,5 +160,5 @@
        we need to interleave these magnitudes with the secfilt entries just loaded */
     if (primary != NULL) {
-      int Ntmpfilt, Ntotal, i, j;
+      off_t Ntmpfilt, Ntotal, i, j;
       SecFilt *tmpfilt;
       tmpfilt  = catalog[0].secfilt;
@@ -182,5 +183,5 @@
     /* no real need to skip the data array here... */
     Nbytes = gfits_data_size (&header);
-    fseek (f, Nbytes, SEEK_CUR);
+    fseeko (f, Nbytes, SEEK_CUR);
     if (primary != NULL) {
       free (primary);
@@ -200,5 +201,5 @@
 int dvo_catalog_save_mef (Catalog *catalog, char VERBOSE) {
 
-  int Nitems;
+  off_t Nitems;
   FILE *f;
   Matrix matrix;
@@ -207,5 +208,6 @@
   SecFilt *primary;
   SecFilt *secfilt;
-  int i, j, Nsecfilt, Nallfilt, Ntotal;
+  off_t i, j, Nallfilt, Ntotal;
+  int Nsecfilt;
 
   if (catalog[0].Naverage == 0) {
@@ -236,14 +238,14 @@
 
   /* make sure header is consistent with data */
-  gfits_modify (&catalog[0].header, "NSTARS",   "%d", 1, catalog[0].Naverage);
-  gfits_modify (&catalog[0].header, "NMEAS",    "%d", 1, catalog[0].Nmeasure);
-  gfits_modify (&catalog[0].header, "NMISS",    "%d", 1, catalog[0].Nmissing);
-  gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, Nsecfilt);
-  gfits_modify (&catalog[0].header, "EXTEND",   "%t", 1, TRUE);
+  gfits_modify (&catalog[0].header, "NSTARS",   "%lld", 1, (long long) catalog[0].Naverage);
+  gfits_modify (&catalog[0].header, "NMEAS",    "%lld", 1, (long long) catalog[0].Nmeasure);
+  gfits_modify (&catalog[0].header, "NMISS",    "%lld", 1, (long long) catalog[0].Nmissing);
+  gfits_modify (&catalog[0].header, "NSECFILT", "%d",   1,                        Nsecfilt);
+  gfits_modify_alt (&catalog[0].header, "EXTEND",   "%t", 1, TRUE);
   gfits_modify (&catalog[0].header, "OBJID",    "%d", 1, catalog[0].objID);
 
   f = catalog[0].f;
   /* rewind file pointers and truncate */
-  fseek (f, 0, SEEK_SET);
+  fseeko (f, 0LL, SEEK_SET);
   ftruncate (fileno (catalog[0].f), 0);
   ftable.header = &header;
Index: trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c	(revision 27435)
@@ -5,8 +5,8 @@
 int dvo_catalog_load_raw (Catalog *catalog, int VERBOSE) {
   
-  int Nitems, nitems;
-  int i, Nmeas, Nmiss, size;
-  int NewMeasure, Nskip;
-  int AverageSize, MeasureSize, MissingSize, SecFiltSize;
+  off_t Nitems, nitems;
+  off_t i, Nmeas, Nmiss, size;
+  off_t NewMeasure, Nskip;
+  off_t AverageSize, MeasureSize, MissingSize, SecFiltSize;
   FILE *f;
   struct stat filestatus;
@@ -17,12 +17,12 @@
 
   /* move pointer past header -- must be already read (load_catalog) */
-  fseek (f, catalog[0].header.size, SEEK_SET);
+  fseeko (f, catalog[0].header.datasize, SEEK_SET);
 
   /* get the components from the header */
   catalog[0].Naverage = catalog[0].Nmeasure = catalog[0].Nmissing = catalog[0].Nsecfilt = 0;
-  if (!gfits_scan (&catalog[0].header, "NSTARS",   "%d", 1, &catalog[0].Naverage)) return (FALSE);
-  if (!gfits_scan (&catalog[0].header, "NMEAS",    "%d", 1, &catalog[0].Nmeasure)) return (FALSE);
-  if (!gfits_scan (&catalog[0].header, "NMISS",    "%d", 1, &catalog[0].Nmissing)) return (FALSE);
-  if (!gfits_scan (&catalog[0].header, "NSECFILT", "%d", 1, &catalog[0].Nsecfilt)) catalog[0].Nsecfilt = 0;
+  if (!gfits_scan (&catalog[0].header, "NSTARS",   "%lld", 1, (long long *) &catalog[0].Naverage)) return (FALSE);
+  if (!gfits_scan (&catalog[0].header, "NMEAS",    "%lld", 1, (long long *) &catalog[0].Nmeasure)) return (FALSE);
+  if (!gfits_scan (&catalog[0].header, "NMISS",    "%lld", 1, (long long *) &catalog[0].Nmissing)) return (FALSE);
+  if (!gfits_scan (&catalog[0].header, "NSECFILT", "%d",   1,               &catalog[0].Nsecfilt)) catalog[0].Nsecfilt = 0;
 
   /* the OBJID is a counter that uniquely defines an average entry and never changes.  if
@@ -45,5 +45,5 @@
   }
   /* special cases: old versions of the DB tables which were poorly identified */
-  if (gfits_scan (&catalog[0].header, "NEWMEAS",  "%t", 1, &NewMeasure)) {
+  if (gfits_scan_alt (&catalog[0].header, "NEWMEAS",  "%t", 1, &NewMeasure)) {
     catalog[0].catformat = DVO_FORMAT_ELIXIR; // special case for ELIXIR
     goto got_format;
@@ -98,5 +98,5 @@
 
   /* predicted file size - for double checking data validity */
-  size = catalog[0].header.size;
+  size = catalog[0].header.datasize;
   size += AverageSize * catalog[0].Naverage;
   size += MeasureSize * catalog[0].Nmeasure;
@@ -112,9 +112,9 @@
     if (VERBOSE) {
       fprintf (stderr, "star catalog has inconsistent size\n");
-      fprintf (stderr, "average: %d = %d bytes\n", catalog[0].Naverage, catalog[0].Naverage*AverageSize);
-      fprintf (stderr, "measure: %d = %d bytes\n", catalog[0].Nmeasure, catalog[0].Nmeasure*MeasureSize);
-      fprintf (stderr, "missing: %d = %d bytes\n", catalog[0].Nmissing, catalog[0].Nmissing*MissingSize);
-      fprintf (stderr, "secfilt: %d = %d bytes\n", catalog[0].Nsecfilt, catalog[0].Nsecfilt*SecFiltSize*catalog[0].Naverage);
-      fprintf (stderr, "expect: %d, found: %d\n", size, (int)filestatus.st_size);
+      fprintf (stderr, "average: %lld = %lld bytes\n", (long long) catalog[0].Naverage, (long long) catalog[0].Naverage*AverageSize);
+      fprintf (stderr, "measure: %lld = %lld bytes\n", (long long) catalog[0].Nmeasure, (long long) catalog[0].Nmeasure*MeasureSize);
+      fprintf (stderr, "missing: %lld = %lld bytes\n", (long long) catalog[0].Nmissing, (long long) catalog[0].Nmissing*MissingSize);
+      fprintf (stderr, "secfilt: %lld = %lld bytes\n", (long long) catalog[0].Nsecfilt, (long long) catalog[0].Nsecfilt*SecFiltSize*catalog[0].Naverage);
+      fprintf (stderr, "expect: %lld, found: %lld\n", (long long) size, (long long) filestatus.st_size);
     }
     return (FALSE);
@@ -136,5 +136,5 @@
     /* skip over averages */
     Nskip = catalog[0].Naverage * AverageSize;
-    fseek (f, Nskip, SEEK_CUR); 
+    fseeko (f, Nskip, SEEK_CUR); 
   }    
   
@@ -145,5 +145,5 @@
     /* skip over measures */
     Nskip = catalog[0].Nmeasure * MeasureSize;
-    fseek (f, Nskip, SEEK_CUR); 
+    fseeko (f, Nskip, SEEK_CUR); 
   }    
 
@@ -154,5 +154,5 @@
     nitems = fread (catalog[0].missing, MissingSize, Nitems, f);
     if (nitems != Nitems) {
-      if (VERBOSE) fprintf (stderr, "failed to read missing from catalog file %s (%d vs %d)\n", catalog[0].filename, nitems, Nitems);
+      if (VERBOSE) fprintf (stderr, "failed to read missing from catalog file %s (%lld vs %lld)\n", catalog[0].filename, (long long) nitems, (long long) Nitems);
       return (FALSE);
     }
@@ -161,5 +161,5 @@
     /* skip over missings */
     Nskip = catalog[0].Nmissing * MissingSize;
-    fseek (f, Nskip, SEEK_CUR); 
+    fseeko (f, Nskip, SEEK_CUR); 
   }
   
@@ -172,5 +172,5 @@
        we need to interleave these magnitudes with the secfilt entries just loaded */
     if (primary != NULL) {
-      int Ntmpfilt, Nsecfilt, Ntotal, i, j;
+      off_t Ntmpfilt, Nsecfilt, Ntotal, i, j;
       SecFilt *tmpfilt;
       tmpfilt  = catalog[0].secfilt;
@@ -193,10 +193,14 @@
     /* skip over secfilts */
     Nskip = catalog[0].Nsecfilt * catalog[0].Naverage * SecFiltSize;
-    fseek (f, Nskip, SEEK_CUR); 
+    fseeko (f, Nskip, SEEK_CUR); 
     if (primary != NULL) free (primary);
   }
 
-  if (VERBOSE) fprintf (stderr, "read %d stars from catalog file %s (%d measurements, %d missing, %d secondary filters)\n", 
-			catalog[0].Naverage, catalog[0].filename, catalog[0].Nmeasure, catalog[0].Nmissing, catalog[0].Nsecfilt);
+  if (VERBOSE) fprintf (stderr, "read %lld stars from catalog file %s (%lld measurements, %lld missing, %lld secondary filters)\n", 
+			(long long) catalog[0].Naverage, 
+			catalog[0].filename, 
+			(long long) catalog[0].Nmeasure, 
+			(long long) catalog[0].Nmissing, 
+			(long long) catalog[0].Nsecfilt);
 
   /* check data integrity */
@@ -209,6 +213,6 @@
       if (VERBOSE) {
 	fprintf (stderr, "****** data in catalog %s is corrupt, sums don't check\n", catalog[0].filename);
-	fprintf (stderr, "****** Nmeas: %d, %d\n", Nmeas, catalog[0].Nmeasure);
-	fprintf (stderr, "****** Nmiss: %d, %d\n", Nmiss, catalog[0].Nmissing);
+	fprintf (stderr, "****** Nmeas: %lld, %lld\n", (long long) Nmeas, (long long) catalog[0].Nmeasure);
+	fprintf (stderr, "****** Nmiss: %lld, %lld\n", (long long) Nmiss, (long long) catalog[0].Nmissing);
       }
       return (FALSE);
@@ -226,9 +230,9 @@
 int dvo_catalog_save_raw (Catalog *catalog, char VERBOSE) {
 
-  int Nitems, nitems;
+  off_t Nitems, nitems;
   FILE *f;
   SecFilt *primary;
   SecFilt *secfilt;
-  int i, j, Nsecfilt, Nallfilt, Ntotal;
+  off_t i, j, Nsecfilt, Nallfilt, Ntotal;
 
   if (catalog[0].Naverage == 0) {
@@ -259,8 +263,8 @@
 
   /* make sure header is consistent with data */
-  gfits_modify (&catalog[0].header, "NSTARS",   "%d", 1, catalog[0].Naverage);
-  gfits_modify (&catalog[0].header, "NMEAS",    "%d", 1, catalog[0].Nmeasure);
-  gfits_modify (&catalog[0].header, "NMISS",    "%d", 1, catalog[0].Nmissing);
-  gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, catalog[0].Nsecfilt);
+  gfits_modify (&catalog[0].header, "NSTARS",   "%lld", 1, (long long) catalog[0].Naverage);
+  gfits_modify (&catalog[0].header, "NMEAS",    "%lld", 1, (long long) catalog[0].Nmeasure);
+  gfits_modify (&catalog[0].header, "NMISS",    "%lld", 1, (long long) catalog[0].Nmissing);
+  gfits_modify (&catalog[0].header, "NSECFILT", "%lld", 1, (long long) catalog[0].Nsecfilt);
   gfits_modify (&catalog[0].header, "OBJID",    "%d", 1, catalog[0].objID);
 
@@ -278,10 +282,10 @@
   /* rewind file pointers and truncate file */
   f = catalog[0].f;
-  fseek (f, 0, SEEK_SET);
+  fseeko (f, 0, SEEK_SET);
   ftruncate (fileno (catalog[0].f), 0);
 
   /* write header data (use gfits_write_header?) */
-  nitems = fwrite (catalog[0].header.buffer, 1, catalog[0].header.size, f);
-  if (nitems != catalog[0].header.size) {
+  nitems = fwrite (catalog[0].header.buffer, 1, catalog[0].header.datasize, f);
+  if (nitems != catalog[0].header.datasize) {
     if (VERBOSE) fprintf (stderr, "failed to write header\n");
     goto failure;
@@ -330,5 +334,5 @@
    in these cases, save these values in primary; otherwise set primary to NULL */
 
-Average *ReadRawAverage (FILE *f, int Naverage, int format, SecFilt **primary) {
+Average *ReadRawAverage (FILE *f, off_t Naverage, char format, SecFilt **primary) {
 
   Average *average;
@@ -339,10 +343,10 @@
 # define FORMAT_CASE(NAME,TYPE) \
     case DVO_FORMAT_##NAME: { \
-      int nitems; \
+      off_t nitems; \
       Average_##TYPE *tmpAverage; \
       ALLOCATE (tmpAverage, Average_##TYPE, MAX (Naverage, 1)); \
       nitems = fread (tmpAverage, sizeof(Average_##TYPE), Naverage, f); \
       if (nitems != Naverage) { \
-	fprintf (stderr, "failed to read averages (%d vs %d)\n", nitems, Naverage); \
+	fprintf (stderr, "failed to read averages (%lld vs %lld)\n", (long long) nitems, (long long) Naverage); \
 	return (NULL); \
       } \
@@ -354,9 +358,9 @@
   switch (format) {
     case DVO_FORMAT_INTERNAL: {
-      int nitems;
+      off_t nitems;
       ALLOCATE (average, Average, MAX (Naverage, 1));
       nitems = fread (average, sizeof(Average), Naverage, f);
       if (nitems != Naverage) {
-	fprintf (stderr, "failed to read averages (%d vs %d)\n", nitems, Naverage);
+	fprintf (stderr, "failed to read averages (%lld vs %lld)\n", (long long) nitems, (long long) Naverage);
 	return (NULL);
       }
@@ -384,10 +388,10 @@
 /* accepts and converts internal average formats and outputs 
    raw data in the specified format */
-int WriteRawAverage (FILE *f, Average *average, int Naverage, int format, SecFilt *primary) {
+int WriteRawAverage (FILE *f, Average *average, off_t Naverage, char format, SecFilt *primary) {
 
 // this macro generates the case statements for each type
 # define FORMAT_CASE(NAME,TYPE) \
     case DVO_FORMAT_##NAME: { \
-      int nitems; \
+      off_t nitems; \
       Average_##TYPE *tmpAverage; \
       tmpAverage = AverageInternalTo_##TYPE (average, Naverage, primary); \
@@ -396,5 +400,5 @@
       free (tmpAverage); \
       if (nitems != Naverage) { \
-	fprintf (stderr, "failed to write averages (%d vs %d)\n", nitems, Naverage); \
+	fprintf (stderr, "failed to write averages (%lld vs %lld)\n", (long long) nitems, (long long) Naverage); \
 	return (FALSE); \
       } \
@@ -403,9 +407,9 @@
   switch (format) {
     case DVO_FORMAT_INTERNAL: {
-      int nitems;
+      off_t nitems;
       gfits_convert_Average (average, sizeof(Average), Naverage);
       nitems = fwrite (average, sizeof(Average), Naverage, f);
       if (nitems != Naverage) {
-	fprintf (stderr, "failed to write averages (%d vs %d)\n", nitems, Naverage);
+	fprintf (stderr, "failed to write averages (%lld vs %lld)\n", (long long) nitems, (long long) Naverage);
 	return (FALSE);
       }
@@ -432,5 +436,5 @@
 /** Average / Raw Table conversions **/
 
-Measure *ReadRawMeasure (FILE *f, int Nmeasure, int format) {
+Measure *ReadRawMeasure (FILE *f, off_t Nmeasure, char format) {
 
   Measure *measure;
@@ -439,10 +443,10 @@
 # define FORMAT_CASE(NAME,TYPE) \
     case DVO_FORMAT_##NAME: { \
-      int nitems; \
+      off_t nitems; \
       Measure_##TYPE *tmpMeasure; \
       ALLOCATE (tmpMeasure, Measure_##TYPE, MAX (Nmeasure, 1)); \
       nitems = fread (tmpMeasure, sizeof(Measure_##TYPE), Nmeasure, f); \
       if (nitems != Nmeasure) { \
-	fprintf (stderr, "failed to read measures (%d vs %d)\n", nitems, Nmeasure); \
+	fprintf (stderr, "failed to read measures (%lld vs %lld)\n", (long long) nitems, (long long) Nmeasure); \
 	return (NULL); \
       } \
@@ -454,9 +458,9 @@
   switch (format) {
     case DVO_FORMAT_INTERNAL: {
-      int nitems;
+      off_t nitems;
       ALLOCATE (measure, Measure, MAX (Nmeasure, 1));
       nitems = fread (measure, sizeof(Measure), Nmeasure, f);
       if (nitems != Nmeasure) {
-	fprintf (stderr, "failed to read measures (%d vs %d)\n", nitems, Nmeasure);
+	fprintf (stderr, "failed to read measures (%lld vs %lld)\n", (long long) nitems, (long long) Nmeasure);
 	return (NULL);
       }
@@ -484,10 +488,10 @@
 /* accepts and converts internal measure formats and outputs 
    raw data in the specified format */
-int WriteRawMeasure (FILE *f, Measure *measure, int Nmeasure, int 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: { \
-      int nitems; \
+      off_t nitems; \
       Measure_##TYPE *tmpMeasure; \
       tmpMeasure = MeasureInternalTo_##TYPE (measure, Nmeasure); \
@@ -496,5 +500,5 @@
       free (tmpMeasure); \
       if (nitems != Nmeasure) { \
-	fprintf (stderr, "failed to write measures (%d vs %d)\n", nitems, Nmeasure); \
+	fprintf (stderr, "failed to write measures (%lld vs %lld)\n", (long long) nitems, (long long) Nmeasure); \
 	return (FALSE); \
       } \
@@ -503,9 +507,9 @@
   switch (format) {
     case DVO_FORMAT_INTERNAL: {
-      int nitems;
+      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 (%d vs %d)\n", nitems, Nmeasure);
+	fprintf (stderr, "failed to write measures (%lld vs %lld)\n", (long long) nitems, (long long) Nmeasure);
 	return (FALSE);
       }
@@ -532,5 +536,5 @@
 /** SecFilt / Raw Table conversions **/
 
-SecFilt *ReadRawSecFilt (FILE *f, int Nsecfilt, int format) {
+SecFilt *ReadRawSecFilt (FILE *f, off_t Nsecfilt, char format) {
 
   SecFilt *secfilt;
@@ -539,10 +543,10 @@
 # define FORMAT_CASE(NAME,TYPE) \
     case DVO_FORMAT_##NAME: { \
-      int nitems; \
+      off_t nitems; \
       SecFilt_##TYPE *tmpSecFilt; \
       ALLOCATE (tmpSecFilt, SecFilt_##TYPE, MAX (Nsecfilt, 1)); \
       nitems = fread (tmpSecFilt, sizeof(SecFilt_##TYPE), Nsecfilt, f); \
       if (nitems != Nsecfilt) { \
-	fprintf (stderr, "failed to read secfilts (%d vs %d)\n", nitems, Nsecfilt); \
+	fprintf (stderr, "failed to read secfilts (%lld vs %lld)\n", (long long) nitems, (long long) Nsecfilt); \
 	return (NULL); \
       } \
@@ -554,9 +558,9 @@
   switch (format) {
     case DVO_FORMAT_INTERNAL: {
-      int nitems;
+      off_t nitems;
       ALLOCATE (secfilt, SecFilt, MAX (Nsecfilt, 1));
       nitems = fread (secfilt, sizeof(SecFilt), Nsecfilt, f);
       if (nitems != Nsecfilt) {
-	fprintf (stderr, "failed to read secfilts (%d vs %d)\n", nitems, Nsecfilt);
+	fprintf (stderr, "failed to read secfilts (%lld vs %lld)\n", (long long) nitems, (long long) Nsecfilt);
 	return (NULL);
       }
@@ -584,10 +588,10 @@
 /* accepts and converts internal secfilt formats and outputs 
    raw data in the specified format */
-int WriteRawSecFilt (FILE *f, SecFilt *secfilt, int Nsecfilt, int format) {
+int WriteRawSecFilt (FILE *f, SecFilt *secfilt, off_t Nsecfilt, char format) {
 
 // this macro generates the case statements for each type
 # define FORMAT_CASE(NAME,TYPE) \
     case DVO_FORMAT_##NAME: { \
-      int nitems; \
+      off_t nitems; \
       SecFilt_##TYPE *tmpSecFilt; \
       tmpSecFilt = SecFiltInternalTo_##TYPE (secfilt, Nsecfilt); \
@@ -596,5 +600,5 @@
       free (tmpSecFilt); \
       if (nitems != Nsecfilt) { \
-	fprintf (stderr, "failed to write secfilts (%d vs %d)\n", nitems, Nsecfilt); \
+	fprintf (stderr, "failed to write secfilts (%lld vs %lld)\n", (long long) nitems, (long long) Nsecfilt); \
 	return (FALSE); \
       } \
@@ -603,9 +607,9 @@
   switch (format) {
     case DVO_FORMAT_INTERNAL: {
-      int nitems;
+      off_t nitems;
       gfits_convert_SecFilt (secfilt, sizeof(SecFilt), Nsecfilt);
       nitems = fwrite (secfilt, sizeof(SecFilt), Nsecfilt, f);
       if (nitems != Nsecfilt) {
-	fprintf (stderr, "failed to write secfilts (%d vs %d)\n", nitems, Nsecfilt);
+	fprintf (stderr, "failed to write secfilts (%lld vs %lld)\n", (long long) nitems, (long long) Nsecfilt);
 	return (FALSE);
       }
Index: trunk/Ohana/src/libdvo/src/dvo_catalog_split.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_catalog_split.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_catalog_split.c	(revision 27435)
@@ -8,5 +8,5 @@
 int dvo_catalog_secfilt_to_primary (Catalog *catalog, SecFilt **myPrimary, SecFilt **mySecfilt, int *myNsecfilt) {
 
-  int i, j, Nallfilt, Nsecfilt, Ntotal;
+  off_t i, j, Nallfilt, Nsecfilt, Ntotal;
 
   SecFilt *primary;
@@ -43,7 +43,7 @@
 }
 
-int dvo_catalog_primary_to_secfilt (Catalog *catalog, SecFilt *primary, int Naves) {
-
-  int Ntmpfilt, Nsecfilt, Ntotal, i, j;
+int dvo_catalog_primary_to_secfilt (Catalog *catalog, SecFilt *primary, off_t Naves) {
+
+  off_t Ntmpfilt, Nsecfilt, Ntotal, i, j;
   SecFilt *tmpfilt;
 
@@ -71,10 +71,10 @@
 }
 
-int dvo_catalog_save_subcat (Catalog *catalog, FTable *ftable, int start, int Nrows, int Ndisk, int Ntotal) {
+int dvo_catalog_save_subcat (Catalog *catalog, FTable *ftable, off_t start, off_t Nrows, off_t Ndisk, off_t Ntotal) {
 
   Matrix matrix;
 
   /* rewind file pointers and truncate (file is still open) */
-  fseek (catalog->f, 0, SEEK_SET);
+  fseeko (catalog->f, 0LL, SEEK_SET);
 
   // write PHU header
@@ -103,5 +103,6 @@
 int dvo_catalog_open_subcat (Catalog *catalog, Catalog **Subcat, Header *header, char *name, int VERBOSE) {
 
-  int Nskip, status;
+  off_t Nskip;
+  int status;
   char *path, string[80];
   Catalog *subcat;
@@ -145,5 +146,5 @@
   }
   Nskip = gfits_data_size (&subcat[0].header);
-  fseek (subcat[0].f, Nskip, SEEK_CUR);
+  fseeko (subcat[0].f, Nskip, SEEK_CUR);
 
   /* read Measure table header */
@@ -158,5 +159,8 @@
 int dvo_catalog_load_split (Catalog *catalog, int VERBOSE) {
 
-  int Nbytes, Nitems, Naverage, Nmeasure, Nmissing, Nsecfilt, status;
+  off_t Nbytes;
+  off_t Naverage, Nmeasure, Nmissing;
+  off_t Nitems;
+  int status, Nsecfilt;
   Header header;
   FTable ftable;
@@ -170,17 +174,17 @@
 
   /* get the components from the header - these duplicate information in the split files (NAXIS2) */
-  if (!gfits_scan (&catalog[0].header, "NSTARS",   "%d", 1, &Naverage)) return (FALSE);
-  if (!gfits_scan (&catalog[0].header, "NMEAS",    "%d", 1, &Nmeasure)) return (FALSE);
-  if (!gfits_scan (&catalog[0].header, "NMISS",    "%d", 1, &Nmissing)) return (FALSE);
-  if (!gfits_scan (&catalog[0].header, "NSECFILT", "%d", 1, &Nsecfilt)) Nsecfilt = 0;
+  if (!gfits_scan (&catalog[0].header, "NSTARS",   "%lld", 1, (long long *) &Naverage)) return (FALSE);
+  if (!gfits_scan (&catalog[0].header, "NMEAS",    "%lld", 1, (long long *) &Nmeasure)) return (FALSE);
+  if (!gfits_scan (&catalog[0].header, "NMISS",    "%lld", 1, (long long *) &Nmissing)) return (FALSE);
+  if (!gfits_scan (&catalog[0].header, "NSECFILT", "%d",   1,               &Nsecfilt)) Nsecfilt = 0;
 
   /* the OBJID is a counter that uniquely defines an average entry and never changes.  if
      it is not defined for a legacy database, we can generate them using the existing index values.
      If it is missing, give a warning and recommend the user upgrade the DB */
-  if (!gfits_scan (&catalog[0].header, "OBJID",    "%d", 1, &catalog[0].objID)) {
+  if (!gfits_scan (&catalog[0].header, "OBJID",    "%u", 1, &catalog[0].objID)) {
     if (VERBOSE) fprintf (stderr, "WARNING: OBJID is not set for this database: upgrade for full feature set\n");
     catalog[0].objID = 0;
   }
-  if (!gfits_scan (&catalog[0].header, "CATID",    "%d", 1, &catalog[0].catID)) {
+  if (!gfits_scan (&catalog[0].header, "CATID",    "%u", 1, &catalog[0].catID)) {
     if (VERBOSE) fprintf (stderr, "WARNING: CATID is not set for this database: upgrade for full feature set\n");
     catalog[0].catID = 0;
@@ -206,6 +210,6 @@
   if (catalog[0].catflags & LOAD_AVES) {
     /* move pointer past header -- must be already read (load_catalog) */
-    Nbytes = catalog[0].header.size + gfits_data_size (&catalog[0].header);
-    fseek (catalog[0].f, Nbytes, SEEK_SET);
+    Nbytes = catalog[0].header.datasize + gfits_data_size (&catalog[0].header);
+    fseeko (catalog[0].f, Nbytes, SEEK_SET);
     /* read Average table header */
     if (!gfits_fread_header (catalog[0].f, &header)) { 
@@ -223,5 +227,5 @@
     catalog[0].average = FtableToAverage (&ftable, &Naverage, &catalog[0].catformat, &primary);
     if (Naverage != catalog[0].Naves_disk) {
-      fprintf (stderr, "Warning: mismatch between Naverage in PHU and Table headers (%d vs %d)\n", Naverage, catalog[0].Naves_disk);
+      fprintf (stderr, "Warning: mismatch between Naverage in PHU and Table headers (%lld vs %lld)\n", (long long) Naverage, (long long) catalog[0].Naves_disk);
     }
     gfits_free_header (&header);
@@ -252,5 +256,5 @@
     catalog[0].measure = FtableToMeasure (&ftable, &Nmeasure, &catalog[0].catformat);
     if (Nmeasure != catalog[0].Nmeas_disk) {
-      fprintf (stderr, "Warning: mismatch between Nmeasure in PHU and Table headers (%d vs %d)\n", Nmeasure, catalog[0].Nmeas_disk);
+      fprintf (stderr, "Warning: mismatch between Nmeasure in PHU and Table headers (%lld vs %lld)\n", (long long) Nmeasure, (long long) catalog[0].Nmeas_disk);
     }
     catalog[0].Nmeasure = catalog[0].Nmeas_disk;
@@ -282,5 +286,5 @@
     catalog[0].missing = gfits_table_get_Missing (&ftable, &Nmissing, NULL);
     if (Nmissing != catalog[0].Nmiss_disk) {
-      fprintf (stderr, "Warning: mismatch between Nmissing in PHU and Table headers (%d vs %d)\n", Nmissing, catalog[0].Nmiss_disk);
+      fprintf (stderr, "Warning: mismatch between Nmissing in PHU and Table headers (%lld vs %lld)\n", (long long) Nmissing, (long long) catalog[0].Nmiss_disk);
     }
     catalog[0].Nmissing = catalog[0].Nmiss_disk;
@@ -311,5 +315,5 @@
     catalog[0].secfilt = FtableToSecFilt (&ftable, &Nitems, &catalog[0].catformat);
     if (Nitems != catalog[0].Nsecf_disk) {
-      fprintf (stderr, "Warning: mismatch between Nsecfilt items in PHU and Table headers (%d vs %d)\n", Nitems, catalog[0].Nsecf_disk);
+      fprintf (stderr, "Warning: mismatch between Nsecfilt items in PHU and Table headers (%lld vs %lld)\n", (long long) Nitems, (long long) catalog[0].Nsecf_disk);
     }
     catalog[0].Nsecf_mem = catalog[0].Nsecf_disk;
@@ -339,7 +343,8 @@
 // I need to always read both average and secfilt at the same time to correctly manage the
 // primary secfilt values...
-int dvo_catalog_load_segment_split (Catalog *catalog, int VERBOSE, int start, int Nrows) {
-
-  int Nbytes, Naverage, Nexpect, Nitems, Nmeasure, Nmissing;
+int dvo_catalog_load_segment_split (Catalog *catalog, int VERBOSE, off_t start, off_t Nrows) {
+
+  off_t Nbytes;
+  off_t Naverage, Nexpect, Nitems, Nmeasure, Nmissing;
   Header header;
   FTable ftable;
@@ -357,6 +362,6 @@
     /*** load the Average data ***/
     /* move pointer past header and matrix -- must be already read (load_catalog) */
-    Nbytes = catalog[0].header.size + gfits_data_size (&catalog[0].header);
-    fseek (catalog[0].f, Nbytes, SEEK_SET);
+    Nbytes = catalog[0].header.datasize + gfits_data_size (&catalog[0].header);
+    fseeko (catalog[0].f, Nbytes, SEEK_SET);
     /* read Average table header */
     if (!gfits_fread_header (catalog[0].f, &header)) {
@@ -386,6 +391,6 @@
 
     /* move pointer past header -- must be already read (load_catalog) */
-    Nbytes = subcat[0].header.size + gfits_data_size (&subcat[0].header);
-    fseek (subcat[0].f, Nbytes, SEEK_SET);
+    Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header);
+    fseeko (subcat[0].f, Nbytes, SEEK_SET);
 
     /* read Secfilt table header */
@@ -403,5 +408,5 @@
     catalog[0].secfilt = FtableToSecFilt (&ftable, &Nitems, &catalog[0].catformat);
     if (Nitems != Nexpect) {
-      fprintf (stderr, "Warning: mismatch between Nsecfilt items in PHU and Table headers (%d vs %d)\n", Nitems, Nexpect);
+      fprintf (stderr, "Warning: mismatch between Nsecfilt items in PHU and Table headers (%lld vs %lld)\n", (long long) Nitems, (long long) Nexpect);
     }
     catalog[0].Nsecf_mem = catalog[0].Naverage * catalog[0].Nsecfilt;
@@ -422,6 +427,6 @@
 
     /* move pointer past header -- must be already read (load_catalog) */
-    Nbytes = subcat[0].header.size + gfits_data_size (&subcat[0].header);
-    fseek (subcat[0].f, Nbytes, SEEK_SET);
+    Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header);
+    fseeko (subcat[0].f, Nbytes, SEEK_SET);
 
     /* read Measure table header */
@@ -439,5 +444,5 @@
     catalog[0].measure = FtableToMeasure (&ftable, &Nmeasure, &catalog[0].catformat);
     if (Nmeasure != Nrows) {
-      fprintf (stderr, "Warning: mismatch between Nmeasure in PHU and Table headers (%d vs %d)\n", Nmeasure, Nrows);
+      fprintf (stderr, "Warning: mismatch between Nmeasure in PHU and Table headers (%lld vs %lld)\n", (long long) Nmeasure, (long long) Nrows);
     }
     gfits_free_header (&header);
@@ -452,6 +457,6 @@
 
     /* move pointer past header -- must be already read (load_catalog) */
-    Nbytes = subcat[0].header.size + gfits_data_size (&subcat[0].header);
-    fseek (subcat[0].f, Nbytes, SEEK_SET);
+    Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header);
+    fseeko (subcat[0].f, Nbytes, SEEK_SET);
 
     /* read Missing table header */
@@ -469,5 +474,5 @@
     catalog[0].missing = gfits_table_get_Missing (&ftable, &Nmissing, NULL);
     if (Nmissing != Nrows) {
-      fprintf (stderr, "Warning: mismatch between Nmissing in PHU and Table headers (%d vs %d)\n", Nmissing, Nrows);
+      fprintf (stderr, "Warning: mismatch between Nmissing in PHU and Table headers (%lld vs %lld)\n", (long long) Nmissing, (long long) Nrows);
     }
     gfits_free_header (&header);
@@ -481,11 +486,11 @@
 int dvo_catalog_save_split (Catalog *catalog, char VERBOSE) {
 
-  int Nitems;
+  off_t Nitems;
   Header header;
   FTable ftable;
   SecFilt *primary, *secfilt;
   int Nsecfilt;
-  int Naves_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new;
-  int first, start, Nrows;
+  off_t Naves_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new;
+  off_t first, start, Nrows;
 
   ftable.header = &header;
@@ -519,9 +524,9 @@
 
   /* make sure header is consistent with data */
-  gfits_modify (&catalog[0].header, "NSTARS",   "%d", 1, Naves_disk_new);
-  gfits_modify (&catalog[0].header, "NMEAS",    "%d", 1, Nmeas_disk_new);
-  gfits_modify (&catalog[0].header, "NMISS",    "%d", 1, Nmiss_disk_new);
-  gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, Nsecfilt);
-  gfits_modify (&catalog[0].header, "EXTEND",   "%t", 1, TRUE);
+  gfits_modify (&catalog[0].header, "NSTARS",   "%lld", 1, (long long) Naves_disk_new);
+  gfits_modify (&catalog[0].header, "NMEAS",    "%lld", 1, (long long) Nmeas_disk_new);
+  gfits_modify (&catalog[0].header, "NMISS",    "%lld", 1, (long long) Nmiss_disk_new);
+  gfits_modify (&catalog[0].header, "NSECFILT", "%d",   1, Nsecfilt);
+  gfits_modify_alt (&catalog[0].header, "EXTEND",   "%t", 1, TRUE);
   gfits_modify (&catalog[0].header, "OBJID",    "%d", 1, catalog[0].objID);
 
@@ -555,5 +560,5 @@
     // even if we do not save the average table, we need to keep the header in sync
     /* rewind file pointers and truncate (file is still open) */
-    fseek (catalog[0].f, 0, SEEK_SET);
+    fseeko (catalog[0].f, 0, SEEK_SET);
 
     /* write table PHU header - always write this out */
@@ -662,11 +667,11 @@
 int dvo_catalog_save_split_complete (Catalog *catalog, char VERBOSE) {
 
-  int Nitems;
+  off_t Nitems;
   Header header;
   FTable ftable;
   SecFilt *primary, *secfilt;
   int Nsecfilt;
-  int Naves_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new;
-  int first, start, Nrows;
+  off_t Naves_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new;
+  off_t first, start, Nrows;
 
   ftable.header = &header;
@@ -693,12 +698,10 @@
   }
 
-  if ((catalog[0].Naverage > 0) && (Naves_disk_new == 0)) {
-    Naves_disk_new = catalog[0].Naverage;
+  Naves_disk_new = catalog[0].Naverage;
+  if (Naves_disk_new == 0) {
     if (VERBOSE) fprintf (stderr, "resulting catalog is empty; delete it\n");
     // unlink ();
     return (TRUE);
   }
-
-  Naves_disk_new = catalog[0].Naverage;
 
   // for the appropriate types, pull out the first secfilt and pass to AverageToFtable as primary
@@ -720,9 +723,9 @@
 
   /* make sure header is consistent with data */
-  gfits_modify (&catalog[0].header, "NSTARS",   "%d", 1, Naves_disk_new);
-  gfits_modify (&catalog[0].header, "NMEAS",    "%d", 1, Nmeas_disk_new);
-  gfits_modify (&catalog[0].header, "NMISS",    "%d", 1, Nmiss_disk_new);
+  gfits_modify (&catalog[0].header, "NSTARS",   "%lld", 1, (long long) Naves_disk_new);
+  gfits_modify (&catalog[0].header, "NMEAS",    "%lld", 1, (long long) Nmeas_disk_new);
+  gfits_modify (&catalog[0].header, "NMISS",    "%lld", 1, (long long) Nmiss_disk_new);
   gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, Nsecfilt);
-  gfits_modify (&catalog[0].header, "EXTEND",   "%t", 1, TRUE);
+  gfits_modify_alt (&catalog[0].header, "EXTEND",   "%t", 1, TRUE);
   gfits_modify (&catalog[0].header, "OBJID",    "%d", 1, catalog[0].objID);
 
@@ -756,5 +759,5 @@
     // even if we do not save the average table, we need to keep the header in sync
     /* rewind file pointers and truncate (file is still open) */
-    fseek (catalog[0].f, 0, SEEK_SET);
+    fseeko (catalog[0].f, 0, SEEK_SET);
 
     /* write table PHU header - always write this out */
@@ -867,6 +870,6 @@
   SecFilt *primary, *secfilt;
   int Nsecfilt;
-  int Naves_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new;
-  int first, start, Nrows;
+  off_t Naves_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new;
+  off_t first, start, Nrows;
 
   ftable.header = &header;
@@ -899,9 +902,9 @@
 
   /* make sure header is consistent with data */
-  gfits_modify (&catalog[0].header, "NSTARS",   "%d", 1, Naves_disk_new);
-  gfits_modify (&catalog[0].header, "NMEAS",    "%d", 1, Nmeas_disk_new);
-  gfits_modify (&catalog[0].header, "NMISS",    "%d", 1, Nmiss_disk_new);
+  gfits_modify (&catalog[0].header, "NSTARS",   "%lld", 1, (long long) Naves_disk_new);
+  gfits_modify (&catalog[0].header, "NMEAS",    "%lld", 1, (long long) Nmeas_disk_new);
+  gfits_modify (&catalog[0].header, "NMISS",    "%lld", 1, (long long) Nmiss_disk_new);
   gfits_modify (&catalog[0].header, "NSECFILT", "%d", 1, Nsecfilt);
-  gfits_modify (&catalog[0].header, "EXTEND",   "%t", 1, TRUE);
+  gfits_modify_alt (&catalog[0].header, "EXTEND",   "%t", 1, TRUE);
   gfits_modify (&catalog[0].header, "OBJID",    "%d", 1, catalog[0].objID);
 
@@ -935,5 +938,5 @@
     // even if we do not save the average table, we need to keep the header in sync
     /* rewind file pointers and truncate (file is still open) */
-    fseek (catalog[0].f, 0, SEEK_SET);
+    fseeko (catalog[0].f, 0, SEEK_SET);
 
     /* write table PHU header - always write this out */
Index: trunk/Ohana/src/libdvo/src/dvo_convert.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_convert.c	(revision 27435)
@@ -13,5 +13,5 @@
 /*** Average / FTable conversion functions ***/
 
-Average *FtableToAverage (FTable *ftable, int *Naverage, int *format, SecFilt **primary) {
+Average *FtableToAverage (FTable *ftable, off_t *Naverage, char *format, SecFilt **primary) {
 
   Average *average;
@@ -59,5 +59,5 @@
 }
 
-int AverageToFtable (FTable *ftable, Average *average, int Naverage, int format, SecFilt *primary) {
+int AverageToFtable (FTable *ftable, Average *average, off_t Naverage, char format, SecFilt *primary) {
 
 # define FORMAT_CASE(FORMAT, TYPE) \
@@ -94,5 +94,5 @@
 /*** Measure / FTable conversion functions ***/
 
-Measure *FtableToMeasure (FTable *ftable, int *Nmeasure, int *format) {
+Measure *FtableToMeasure (FTable *ftable, off_t *Nmeasure, char *format) {
 
   Measure *measure;
@@ -136,5 +136,5 @@
 }
 
-int MeasureToFtable (FTable *ftable, Measure *measure, int Nmeasure, int format) {
+int MeasureToFtable (FTable *ftable, Measure *measure, off_t Nmeasure, char format) {
 
 # define FORMAT_CASE(FORMAT, TYPE) \
@@ -171,5 +171,5 @@
 /*** SecFilt / FTable conversion functions ***/
 
-SecFilt *FtableToSecFilt (FTable *ftable, int *Nsecfilt, int *format) {
+SecFilt *FtableToSecFilt (FTable *ftable, off_t *Nsecfilt, char *format) {
 
   SecFilt *secfilt;
@@ -213,5 +213,5 @@
 }
 
-int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, int Nsecfilt, int format) {
+int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, off_t Nsecfilt, char format) {
 
 # define FORMAT_CASE(FORMAT, TYPE) \
@@ -248,7 +248,7 @@
 /*** Image Conversions ***/
 
-int FtableToImage (FTable *ftable, Header *theader, int *format) {
-
-  int Nimage;
+int FtableToImage (FTable *ftable, Header *theader, char *format) {
+
+  off_t Nimage;
   char extname[80];
 
@@ -261,7 +261,7 @@
     gfits_free_header (theader);
     gfits_table_mkheader_Image (theader);
-    gfits_modify (theader, "NAXIS2", "%d", 1, Nimage);
+    gfits_modify (theader, "NAXIS2", "%lld", 1, (long long) Nimage);
     theader[0].Naxis[1] = Nimage;
-    ftable[0].size = gfits_data_size (theader);
+    ftable[0].datasize = gfits_data_size (theader);
     return (TRUE);
   }
@@ -282,7 +282,7 @@
     gfits_free_header (theader); \
     gfits_table_mkheader_Image (theader); \
-    gfits_modify (theader, "NAXIS2", "%d", 1, Nimage); \
+    gfits_modify (theader, "NAXIS2", "%lld", 1, (long long) Nimage); \
     theader[0].Naxis[1] = Nimage; \
-    ftable[0].size = gfits_data_size (theader); \
+    ftable[0].datasize = gfits_data_size (theader); \
     return (TRUE); }
 
@@ -312,7 +312,7 @@
 }
 
-int ImageToFtable (FTable *ftable, Header *theader, int format) {
-
-  int Nimage;
+int ImageToFtable (FTable *ftable, Header *theader, char format) {
+
+  off_t Nimage;
 
   Nimage = theader[0].Naxis[1];
@@ -353,7 +353,7 @@
 }
 
-int ImageToVtable (VTable *vtable, Header *theader, int format) {
-
-  int i, Nrow, Nimage;
+int ImageToVtable (VTable *vtable, Header *theader, char format) {
+
+  off_t i, Nrow, Nimage;
 
   Nrow = vtable[0].Nrow;
@@ -370,10 +370,10 @@
       } \
       /* convert header from old format to new format */ \
-      gfits_scan (theader, "NAXIS2", "%d", 1, &Nimage); \
+      gfits_scan (theader, "NAXIS2", "%lld", 1, (long long *) &Nimage); \
       gfits_free_header (theader); \
       gfits_table_mkheader_Image_##TYPE (theader); \
-      gfits_modify (theader, "NAXIS2", "%d", 1, Nimage); \
+      gfits_modify (theader, "NAXIS2", "%lld", 1, (long long) Nimage); \
       theader[0].Naxis[1] = Nimage; \
-      vtable[0].size = gfits_data_size (theader); \
+      vtable[0].datasize = gfits_data_size (theader); \
       return (TRUE); }
 
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c	(revision 27435)
@@ -3,7 +3,7 @@
 /* convert PS1_DEV_1 formats to internal formats */
 
-Measure *Measure_PS1_DEV_1_ToInternal (Measure_PS1_DEV_1 *in, int Nvalues) {
-
-  int i;
+Measure *Measure_PS1_DEV_1_ToInternal (Measure_PS1_DEV_1 *in, off_t Nvalues) {
+
+  off_t i;
   Measure *out;
 
@@ -61,7 +61,7 @@
 }
 
-Measure_PS1_DEV_1 *MeasureInternalTo_PS1_DEV_1 (Measure *in, int Nvalues) {
-
-  int i;
+Measure_PS1_DEV_1 *MeasureInternalTo_PS1_DEV_1 (Measure *in, off_t Nvalues) {
+
+  off_t i;
   Measure_PS1_DEV_1 *out;
 
@@ -108,7 +108,7 @@
 
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
-Average *Average_PS1_DEV_1_ToInternal (Average_PS1_DEV_1 *in, int Nvalues, SecFilt **primary) {
-
-  int i;
+Average *Average_PS1_DEV_1_ToInternal (Average_PS1_DEV_1 *in, off_t Nvalues, SecFilt **primary) {
+
+  off_t i;
   Average *out;
 
@@ -148,7 +148,7 @@
 
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
-Average_PS1_DEV_1 *AverageInternalTo_PS1_DEV_1 (Average *in, int Nvalues, SecFilt *primary) {
-
-  int i;
+Average_PS1_DEV_1 *AverageInternalTo_PS1_DEV_1 (Average *in, off_t Nvalues, SecFilt *primary) {
+
+  off_t i;
   Average_PS1_DEV_1 *out;
 
@@ -182,7 +182,7 @@
 }
 
-SecFilt *SecFilt_PS1_DEV_1_ToInternal (SecFilt_PS1_DEV_1 *in, int Nvalues) {
-
-  int i;
+SecFilt *SecFilt_PS1_DEV_1_ToInternal (SecFilt_PS1_DEV_1 *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt *out;
 
@@ -203,7 +203,7 @@
 }
 
-SecFilt_PS1_DEV_1 *SecFiltInternalTo_PS1_DEV_1 (SecFilt *in, int Nvalues) {
-
-  int i;
+SecFilt_PS1_DEV_1 *SecFiltInternalTo_PS1_DEV_1 (SecFilt *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt_PS1_DEV_1 *out;
 
@@ -220,7 +220,7 @@
 }
 
-Image *Image_PS1_DEV_1_ToInternal (Image_PS1_DEV_1 *in, int Nvalues) {
-
-  int i;
+Image *Image_PS1_DEV_1_ToInternal (Image_PS1_DEV_1 *in, off_t Nvalues) {
+
+  off_t i;
   Image *out;
 
@@ -284,7 +284,7 @@
 
 /* convert internal images to panstarrs-format images */
-Image_PS1_DEV_1 *ImageInternalTo_PS1_DEV_1 (Image *in, int Nvalues) {
-
-  int i;
+Image_PS1_DEV_1 *ImageInternalTo_PS1_DEV_1 (Image *in, off_t Nvalues) {
+
+  off_t i;
   Image_PS1_DEV_1 *out;
 
@@ -342,7 +342,7 @@
 }
 
-PhotCode *PhotCode_PS1_DEV_1_To_Internal (PhotCode_PS1_DEV_1 *in, int Nvalues) {
-
-  int i;
+PhotCode *PhotCode_PS1_DEV_1_To_Internal (PhotCode_PS1_DEV_1 *in, off_t Nvalues) {
+
+  off_t i;
   PhotCode *out;
 
@@ -381,7 +381,7 @@
 }
 
-PhotCode_PS1_DEV_1 *PhotCode_Internal_To_PS1_DEV_1 (PhotCode *in, int Nvalues) {
-
-  int i;
+PhotCode_PS1_DEV_1 *PhotCode_Internal_To_PS1_DEV_1 (PhotCode *in, off_t Nvalues) {
+
+  off_t i;
   PhotCode_PS1_DEV_1 *out;
 
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c	(revision 27435)
@@ -3,7 +3,7 @@
 /* convert PS1_DEV_2 formats to internal formats */
 
-Measure *Measure_PS1_DEV_2_ToInternal (Measure_PS1_DEV_2 *in, int Nvalues) {
-
-  int i;
+Measure *Measure_PS1_DEV_2_ToInternal (Measure_PS1_DEV_2 *in, off_t Nvalues) {
+
+  off_t i;
   Measure *out;
 
@@ -58,7 +58,7 @@
 }
 
-Measure_PS1_DEV_2 *MeasureInternalTo_PS1_DEV_2 (Measure *in, int Nvalues) {
-
-  int i;
+Measure_PS1_DEV_2 *MeasureInternalTo_PS1_DEV_2 (Measure *in, off_t Nvalues) {
+
+  off_t i;
   Measure_PS1_DEV_2 *out;
 
@@ -104,7 +104,7 @@
 
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
-Average *Average_PS1_DEV_2_ToInternal (Average_PS1_DEV_2 *in, int Nvalues, SecFilt **primary) {
-
-  int i;
+Average *Average_PS1_DEV_2_ToInternal (Average_PS1_DEV_2 *in, off_t Nvalues, SecFilt **primary) {
+
+  off_t i;
   Average *out;
 
@@ -142,7 +142,7 @@
 
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
-Average_PS1_DEV_2 *AverageInternalTo_PS1_DEV_2 (Average *in, int Nvalues, SecFilt *primary) {
-
-  int i;
+Average_PS1_DEV_2 *AverageInternalTo_PS1_DEV_2 (Average *in, off_t Nvalues, SecFilt *primary) {
+
+  off_t i;
   Average_PS1_DEV_2 *out;
 
@@ -176,7 +176,7 @@
 }
 
-SecFilt *SecFilt_PS1_DEV_2_ToInternal (SecFilt_PS1_DEV_2 *in, int Nvalues) {
-
-  int i;
+SecFilt *SecFilt_PS1_DEV_2_ToInternal (SecFilt_PS1_DEV_2 *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt *out;
 
@@ -197,7 +197,7 @@
 }
 
-SecFilt_PS1_DEV_2 *SecFiltInternalTo_PS1_DEV_2 (SecFilt *in, int Nvalues) {
-
-  int i;
+SecFilt_PS1_DEV_2 *SecFiltInternalTo_PS1_DEV_2 (SecFilt *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt_PS1_DEV_2 *out;
 
@@ -214,7 +214,7 @@
 }
 
-Image *Image_PS1_DEV_2_ToInternal (Image_PS1_DEV_2 *in, int Nvalues) {
-
-  int i;
+Image *Image_PS1_DEV_2_ToInternal (Image_PS1_DEV_2 *in, off_t Nvalues) {
+
+  off_t i;
   Image *out;
 
@@ -224,5 +224,5 @@
     memcpy (&out[i].coords, &in[i].coords, sizeof(Coords));
 
-    strncpy (out[i].name, in[i].name, 63); // out[121], int[64]
+    strncpy (out[i].name, in[i].name, 63); // out[121], in[64]
     out[i].name[63] = 0; // force termination
 
@@ -275,7 +275,7 @@
 }
 
-Image_PS1_DEV_2 *ImageInternalTo_PS1_DEV_2 (Image *in, int Nvalues) {
-
-  int i;
+Image_PS1_DEV_2 *ImageInternalTo_PS1_DEV_2 (Image *in, off_t Nvalues) {
+
+  off_t i;
   Image_PS1_DEV_2 *out;
 
@@ -335,7 +335,7 @@
 }
 
-PhotCode *PhotCode_PS1_DEV_2_To_Internal (PhotCode_PS1_DEV_2 *in, int Nvalues) {
-
-  int i;
+PhotCode *PhotCode_PS1_DEV_2_To_Internal (PhotCode_PS1_DEV_2 *in, off_t Nvalues) {
+
+  off_t i;
   PhotCode *out;
 
@@ -372,7 +372,7 @@
 }
 
-PhotCode_PS1_DEV_2 *PhotCode_Internal_To_PS1_DEV_2 (PhotCode *in, int Nvalues) {
-
-  int i;
+PhotCode_PS1_DEV_2 *PhotCode_Internal_To_PS1_DEV_2 (PhotCode *in, off_t Nvalues) {
+
+  off_t i;
   PhotCode_PS1_DEV_2 *out;
 
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_3.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_3.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_3.c	(revision 27435)
@@ -5,7 +5,7 @@
 // We only provide image and photcode conversion
 
-Image *Image_PS1_DEV_3_ToInternal (Image_PS1_DEV_3 *in, int Nvalues) {
+Image *Image_PS1_DEV_3_ToInternal (Image_PS1_DEV_3 *in, off_t Nvalues) {
 
-  int i;
+  off_t i;
   Image *out;
 
@@ -66,7 +66,7 @@
 }
 
-Image_PS1_DEV_3 *ImageInternalTo_PS1_DEV_3 (Image *in, int Nvalues) {
+Image_PS1_DEV_3 *ImageInternalTo_PS1_DEV_3 (Image *in, off_t Nvalues) {
 
-  int i;
+  off_t i;
   Image_PS1_DEV_3 *out;
 
@@ -126,7 +126,7 @@
 }
 
-PhotCode *PhotCode_PS1_DEV_3_To_Internal (PhotCode_PS1_DEV_3 *in, int Nvalues) {
+PhotCode *PhotCode_PS1_DEV_3_To_Internal (PhotCode_PS1_DEV_3 *in, off_t Nvalues) {
 
-  int i;
+  off_t i;
   PhotCode *out;
 
@@ -162,7 +162,7 @@
 }
 
-PhotCode_PS1_DEV_3 *PhotCode_Internal_To_PS1_DEV_3 (PhotCode *in, int Nvalues) {
+PhotCode_PS1_DEV_3 *PhotCode_Internal_To_PS1_DEV_3 (PhotCode *in, off_t Nvalues) {
 
-  int i;
+  off_t i;
   PhotCode_PS1_DEV_3 *out;
 
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c	(revision 27435)
@@ -3,7 +3,7 @@
 /* convert PS1_REF formats to internal formats */
 
-Measure *Measure_PS1_REF_ToInternal (Measure_PS1_REF *in, int Nvalues) {
-
-  int i;
+Measure *Measure_PS1_REF_ToInternal (Measure_PS1_REF *in, off_t Nvalues) {
+
+  off_t i;
   Measure *out;
 
@@ -56,7 +56,7 @@
 }
 
-Measure_PS1_REF *MeasureInternalTo_PS1_REF (Measure *in, int Nvalues) {
-
-  int i;
+Measure_PS1_REF *MeasureInternalTo_PS1_REF (Measure *in, off_t Nvalues) {
+
+  off_t i;
   Measure_PS1_REF *out;
 
@@ -79,7 +79,7 @@
 
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
-Average *Average_PS1_REF_ToInternal (Average_PS1_REF *in, int Nvalues, SecFilt **primary) {
-
-  int i;
+Average *Average_PS1_REF_ToInternal (Average_PS1_REF *in, off_t Nvalues, SecFilt **primary) {
+
+  off_t i;
   Average *out;
 
@@ -97,5 +97,5 @@
     out[i].P        	 = NAN;
     out[i].dP       	 = NAN;
-    out[i].Xp       	 = NAN;
+    out[i].Xp       	 = NAN_S_SHORT;
     out[i].ChiSq       	 = NAN;
     out[i].Npos       	 = 0;
@@ -115,7 +115,7 @@
 
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
-Average_PS1_REF *AverageInternalTo_PS1_REF (Average *in, int Nvalues, SecFilt *primary) {
-
-  int i;
+Average_PS1_REF *AverageInternalTo_PS1_REF (Average *in, off_t Nvalues, SecFilt *primary) {
+
+  off_t i;
   Average_PS1_REF *out;
 
@@ -138,7 +138,7 @@
 }
 
-SecFilt *SecFilt_PS1_REF_ToInternal (SecFilt_PS1_REF *in, int Nvalues) {
-
-  int i;
+SecFilt *SecFilt_PS1_REF_ToInternal (SecFilt_PS1_REF *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt *out;
 
@@ -148,5 +148,5 @@
     out[i].M     = in[i].M;      
     out[i].dM    = in[i].dM;      
-    out[i].Xm    = NAN;
+    out[i].Xm    = NAN_S_SHORT;
     out[i].Ncode = 0;
     out[i].Nused = 0;
@@ -157,7 +157,7 @@
 }
 
-SecFilt_PS1_REF *SecFiltInternalTo_PS1_REF (SecFilt *in, int Nvalues) {
-
-  int i;
+SecFilt_PS1_REF *SecFiltInternalTo_PS1_REF (SecFilt *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt_PS1_REF *out;
 
@@ -171,7 +171,7 @@
 }
 
-Image *Image_PS1_REF_ToInternal (Image_PS1_REF *in, int Nvalues) {
-
-  int i;
+Image *Image_PS1_REF_ToInternal (Image_PS1_REF *in, off_t Nvalues) {
+
+  off_t i;
   Image *out;
 
@@ -230,7 +230,7 @@
 }
 
-Image_PS1_REF *ImageInternalTo_PS1_REF (Image *in, int Nvalues) {
-
-  int i;
+Image_PS1_REF *ImageInternalTo_PS1_REF (Image *in, off_t Nvalues) {
+
+  off_t i;
   Image_PS1_REF *out;
 
@@ -289,7 +289,7 @@
 }
 
-PhotCode *PhotCode_PS1_REF_To_Internal (PhotCode_PS1_REF *in, int Nvalues) {
-
-  int i;
+PhotCode *PhotCode_PS1_REF_To_Internal (PhotCode_PS1_REF *in, off_t Nvalues) {
+
+  off_t i;
   PhotCode *out;
 
@@ -325,7 +325,7 @@
 }
 
-PhotCode_PS1_REF *PhotCode_Internal_To_PS1_REF (PhotCode *in, int Nvalues) {
-
-  int i;
+PhotCode_PS1_REF *PhotCode_Internal_To_PS1_REF (PhotCode *in, off_t Nvalues) {
+
+  off_t i;
   PhotCode_PS1_REF *out;
 
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c	(revision 27435)
@@ -3,7 +3,7 @@
 /* convert PS1_V1 formats to internal formats */
 
-Measure *Measure_PS1_V1_ToInternal (Measure_PS1_V1 *in, int Nvalues) {
-
-  int i;
+Measure *Measure_PS1_V1_ToInternal (Measure_PS1_V1 *in, off_t Nvalues) {
+
+  off_t i;
   Measure *out;
 
@@ -56,7 +56,7 @@
 }
 
-Measure_PS1_V1 *MeasureInternalTo_PS1_V1 (Measure *in, int Nvalues) {
-
-  int i;
+Measure_PS1_V1 *MeasureInternalTo_PS1_V1 (Measure *in, off_t Nvalues) {
+
+  off_t i;
   Measure_PS1_V1 *out;
 
@@ -111,7 +111,7 @@
 
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
-Average *Average_PS1_V1_ToInternal (Average_PS1_V1 *in, int Nvalues, SecFilt **primary) {
-
-  int i;
+Average *Average_PS1_V1_ToInternal (Average_PS1_V1 *in, off_t Nvalues, SecFilt **primary) {
+
+  off_t i;
   Average *out;
 
@@ -147,7 +147,7 @@
 
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
-Average_PS1_V1 *AverageInternalTo_PS1_V1 (Average *in, int Nvalues, SecFilt *primary) {
-
-  int i;
+Average_PS1_V1 *AverageInternalTo_PS1_V1 (Average *in, off_t Nvalues, SecFilt *primary) {
+
+  off_t i;
   Average_PS1_V1 *out;
 
@@ -182,7 +182,7 @@
 }
 
-SecFilt *SecFilt_PS1_V1_ToInternal (SecFilt_PS1_V1 *in, int Nvalues) {
-
-  int i;
+SecFilt *SecFilt_PS1_V1_ToInternal (SecFilt_PS1_V1 *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt *out;
 
@@ -201,7 +201,7 @@
 }
 
-SecFilt_PS1_V1 *SecFiltInternalTo_PS1_V1 (SecFilt *in, int Nvalues) {
-
-  int i;
+SecFilt_PS1_V1 *SecFiltInternalTo_PS1_V1 (SecFilt *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt_PS1_V1 *out;
 
@@ -220,7 +220,7 @@
 }
 
-Image *Image_PS1_V1_ToInternal (Image_PS1_V1 *in, int Nvalues) {
-
-  int i;
+Image *Image_PS1_V1_ToInternal (Image_PS1_V1 *in, off_t Nvalues) {
+
+  off_t i;
   Image *out;
 
@@ -279,7 +279,7 @@
 }
 
-Image_PS1_V1 *ImageInternalTo_PS1_V1 (Image *in, int Nvalues) {
-
-  int i;
+Image_PS1_V1 *ImageInternalTo_PS1_V1 (Image *in, off_t Nvalues) {
+
+  off_t i;
   Image_PS1_V1 *out;
 
@@ -338,7 +338,7 @@
 }
 
-PhotCode *PhotCode_PS1_V1_To_Internal (PhotCode_PS1_V1 *in, int Nvalues) {
-
-  int i;
+PhotCode *PhotCode_PS1_V1_To_Internal (PhotCode_PS1_V1 *in, off_t Nvalues) {
+
+  off_t i;
   PhotCode *out;
 
@@ -374,7 +374,7 @@
 }
 
-PhotCode_PS1_V1 *PhotCode_Internal_To_PS1_V1 (PhotCode *in, int Nvalues) {
-
-  int i;
+PhotCode_PS1_V1 *PhotCode_Internal_To_PS1_V1 (PhotCode *in, off_t Nvalues) {
+
+  off_t i;
   PhotCode_PS1_V1 *out;
 
Index: trunk/Ohana/src/libdvo/src/dvo_convert_elixir.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_elixir.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_elixir.c	(revision 27435)
@@ -2,7 +2,7 @@
 
 /* convert elixir-format measures to internal measures */
-Measure *Measure_Elixir_ToInternal (Measure_Elixir *in, int Nvalues) {
-
-  int i;
+Measure *Measure_Elixir_ToInternal (Measure_Elixir *in, off_t Nvalues) {
+
+  off_t i;
   Measure *out;
 
@@ -69,7 +69,7 @@
 
 /* convert internal measures to elixir-format measures */
-Measure_Elixir *MeasureInternalTo_Elixir (Measure *in, int Nvalues) {
-
-  int i;
+Measure_Elixir *MeasureInternalTo_Elixir (Measure *in, off_t Nvalues) {
+
+  off_t i;
   Measure_Elixir *out;
 
@@ -108,7 +108,7 @@
 
 /* convert elixir-format averages to internal averages */
-Average *Average_Elixir_ToInternal (Average_Elixir *in, int Nvalues, SecFilt **primary) {
-
-  int i;
+Average *Average_Elixir_ToInternal (Average_Elixir *in, off_t Nvalues, SecFilt **primary) {
+
+  off_t i;
   Average *out;
 
@@ -159,7 +159,7 @@
 
 /* convert internal averages to elixir-format averages */
-Average_Elixir *AverageInternalTo_Elixir (Average *in, int Nvalues, SecFilt *primary) {
-
-  int i;
+Average_Elixir *AverageInternalTo_Elixir (Average *in, off_t Nvalues, SecFilt *primary) {
+
+  off_t i;
   Average_Elixir *out;
 
@@ -189,7 +189,7 @@
 
 /* convert elixir-format secfilts to internal secfilts */
-SecFilt *SecFilt_Elixir_ToInternal (SecFilt_Elixir *in, int Nvalues) {
-
-  int i;
+SecFilt *SecFilt_Elixir_ToInternal (SecFilt_Elixir *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt *out;
 
@@ -213,7 +213,7 @@
 
 /* convert internal secfilts to elixir-format secfilts */
-SecFilt_Elixir *SecFiltInternalTo_Elixir (SecFilt *in, int Nvalues) {
-
-  int i;
+SecFilt_Elixir *SecFiltInternalTo_Elixir (SecFilt *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt_Elixir *out;
 
@@ -231,7 +231,7 @@
 
 /* convert elixir-format images to internal images */
-Image *Image_Elixir_ToInternal (Image_Elixir *in, int Nvalues) {
-
-  int i;
+Image *Image_Elixir_ToInternal (Image_Elixir *in, off_t Nvalues) {
+
+  off_t i;
   Image *out;
 
@@ -297,7 +297,7 @@
 
 /* convert internal images to elixir-format images */
-Image_Elixir *ImageInternalTo_Elixir (Image *in, int Nvalues) {
-
-  int i;
+Image_Elixir *ImageInternalTo_Elixir (Image *in, off_t Nvalues) {
+
+  off_t i;
   Image_Elixir *out;
 
@@ -355,7 +355,7 @@
 }
 
-PhotCode *PhotCode_Elixir_To_Internal (PhotCode_Elixir *in, int Nvalues) {
-
-  int i;
+PhotCode *PhotCode_Elixir_To_Internal (PhotCode_Elixir *in, off_t Nvalues) {
+
+  off_t i;
   PhotCode *out;
 
@@ -395,7 +395,7 @@
 }
 
-PhotCode_Elixir *PhotCode_Internal_To_Elixir (PhotCode *in, int Nvalues) {
-
-  int i;
+PhotCode_Elixir *PhotCode_Internal_To_Elixir (PhotCode *in, off_t Nvalues) {
+
+  off_t i;
   PhotCode_Elixir *out;
 
Index: trunk/Ohana/src/libdvo/src/dvo_convert_loneos.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_loneos.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_loneos.c	(revision 27435)
@@ -2,7 +2,7 @@
 
 /* convert loneos-format measures to internal measures */
-Measure *Measure_Loneos_ToInternal (Measure_Loneos *in, int Nvalues) {
-
-  int i;
+Measure *Measure_Loneos_ToInternal (Measure_Loneos *in, off_t Nvalues) {
+
+  off_t i;
   Measure *out;
 
@@ -71,7 +71,7 @@
 
 /* convert internal measures to loneos-format measures */
-Measure_Loneos *MeasureInternalTo_Loneos (Measure *in, int Nvalues) {
-
-  int i;
+Measure_Loneos *MeasureInternalTo_Loneos (Measure *in, off_t Nvalues) {
+
+  off_t i;
   Measure_Loneos *out;
 
@@ -99,7 +99,7 @@
 
 /* convert loneos-format averages to internal averages */
-Average *Average_Loneos_ToInternal (Average_Loneos *in, int Nvalues, SecFilt **primary) {
-
-  int i;
+Average *Average_Loneos_ToInternal (Average_Loneos *in, off_t Nvalues, SecFilt **primary) {
+
+  off_t i;
   Average *out;
 
@@ -151,7 +151,7 @@
 
 /* convert internal averages to loneos-format averages */
-Average_Loneos *AverageInternalTo_Loneos (Average *in, int Nvalues, SecFilt *primary) {
-
-  int i;
+Average_Loneos *AverageInternalTo_Loneos (Average *in, off_t Nvalues, SecFilt *primary) {
+
+  off_t i;
   Average_Loneos *out;
 
@@ -180,7 +180,7 @@
 
 /* convert loneos-format secfilts to internal secfilts */
-SecFilt *SecFilt_Loneos_ToInternal (SecFilt_Loneos *in, int Nvalues) {
-
-  int i;
+SecFilt *SecFilt_Loneos_ToInternal (SecFilt_Loneos *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt *out;
 
@@ -206,7 +206,7 @@
 
 /* convert internal secfilts to loneos-format secfilts */
-SecFilt_Loneos *SecFiltInternalTo_Loneos (SecFilt *in, int Nvalues) {
-
-  int i;
+SecFilt_Loneos *SecFiltInternalTo_Loneos (SecFilt *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt_Loneos *out;
 
@@ -223,7 +223,7 @@
 
 /* convert loneos-format images to internal images */
-Image *Image_Loneos_ToInternal (Image_Loneos *in, int Nvalues) {
-
-  int i;
+Image *Image_Loneos_ToInternal (Image_Loneos *in, off_t Nvalues) {
+
+  off_t i;
   Image *out;
 
@@ -290,7 +290,7 @@
 
 /* convert internal images to loneos-format images */
-Image_Loneos *ImageInternalTo_Loneos (Image *in, int Nvalues) {
-
-  int i;
+Image_Loneos *ImageInternalTo_Loneos (Image *in, off_t Nvalues) {
+
+  off_t i;
   Image_Loneos *out;
 
Index: trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c	(revision 27435)
@@ -2,7 +2,7 @@
 
 /* convert panstarrs-format measures to internal measures */
-Measure *Measure_Panstarrs_DEV_0_ToInternal (Measure_Panstarrs_DEV_0 *in, int Nvalues) {
-
-  int i;
+Measure *Measure_Panstarrs_DEV_0_ToInternal (Measure_Panstarrs_DEV_0 *in, off_t Nvalues) {
+
+  off_t i;
   Measure *out;
 
@@ -66,7 +66,7 @@
 
 /* convert internal measures to panstarrs-format measures */
-Measure_Panstarrs_DEV_0 *MeasureInternalTo_Panstarrs_DEV_0 (Measure *in, int Nvalues) {
-
-  int i;
+Measure_Panstarrs_DEV_0 *MeasureInternalTo_Panstarrs_DEV_0 (Measure *in, off_t Nvalues) {
+
+  off_t i;
   Measure_Panstarrs_DEV_0 *out;
 
@@ -115,7 +115,7 @@
 /* convert panstarrs-format averages to internal averages */
 // 'primary is needed to conform with the API for Loneos and Elixir, but is not used
-Average *Average_Panstarrs_DEV_0_ToInternal (Average_Panstarrs_DEV_0 *in, int Nvalues, SecFilt **primary) {
-
-  int i;
+Average *Average_Panstarrs_DEV_0_ToInternal (Average_Panstarrs_DEV_0 *in, off_t Nvalues, SecFilt **primary) {
+
+  off_t i;
   Average *out;
 
@@ -156,7 +156,7 @@
 /* convert internal averages to panstarrs-format averages */
 // 'primary is needed to conform with the API for Loneos and Elixir, but is not used
-Average_Panstarrs_DEV_0 *AverageInternalTo_Panstarrs_DEV_0 (Average *in, int Nvalues, SecFilt *primary) {
-
-  int i;
+Average_Panstarrs_DEV_0 *AverageInternalTo_Panstarrs_DEV_0 (Average *in, off_t Nvalues, SecFilt *primary) {
+
+  off_t i;
   Average_Panstarrs_DEV_0 *out;
 
@@ -191,7 +191,7 @@
 
 /* convert panstarrs-format secfilts to internal secfilts */
-SecFilt *SecFilt_Panstarrs_DEV_0_ToInternal (SecFilt_Panstarrs_DEV_0 *in, int Nvalues) {
-
-  int i;
+SecFilt *SecFilt_Panstarrs_DEV_0_ToInternal (SecFilt_Panstarrs_DEV_0 *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt *out;
 
@@ -213,7 +213,7 @@
 
 /* convert internal secfilts to panstarrs-format secfilts */
-SecFilt_Panstarrs_DEV_0 *SecFiltInternalTo_Panstarrs_DEV_0 (SecFilt *in, int Nvalues) {
-
-  int i;
+SecFilt_Panstarrs_DEV_0 *SecFiltInternalTo_Panstarrs_DEV_0 (SecFilt *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt_Panstarrs_DEV_0 *out;
 
@@ -231,7 +231,7 @@
 
 /* convert panstarrs-format images to internal images */
-Image *Image_Panstarrs_DEV_0_ToInternal (Image_Panstarrs_DEV_0 *in, int Nvalues) {
-
-  int i;
+Image *Image_Panstarrs_DEV_0_ToInternal (Image_Panstarrs_DEV_0 *in, off_t Nvalues) {
+
+  off_t i;
   Image *out;
 
@@ -297,7 +297,7 @@
 
 /* convert internal images to panstarrs-format images */
-Image_Panstarrs_DEV_0 *ImageInternalTo_Panstarrs_DEV_0 (Image *in, int Nvalues) {
-
-  int i;
+Image_Panstarrs_DEV_0 *ImageInternalTo_Panstarrs_DEV_0 (Image *in, off_t Nvalues) {
+
+  off_t i;
   Image_Panstarrs_DEV_0 *out;
 
Index: trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c	(revision 27435)
@@ -2,7 +2,7 @@
 
 /* convert panstarrs-format measures to internal measures */
-Measure *Measure_Panstarrs_DEV_1_ToInternal (Measure_Panstarrs_DEV_1 *in, int Nvalues) {
-
-  int i;
+Measure *Measure_Panstarrs_DEV_1_ToInternal (Measure_Panstarrs_DEV_1 *in, off_t Nvalues) {
+
+  off_t i;
   Measure *out;
 
@@ -66,7 +66,7 @@
 
 /* convert internal measures to panstarrs-format measures */
-Measure_Panstarrs_DEV_1 *MeasureInternalTo_Panstarrs_DEV_1 (Measure *in, int Nvalues) {
-
-  int i;
+Measure_Panstarrs_DEV_1 *MeasureInternalTo_Panstarrs_DEV_1 (Measure *in, off_t Nvalues) {
+
+  off_t i;
   Measure_Panstarrs_DEV_1 *out;
 
@@ -115,7 +115,7 @@
 /* convert panstarrs-format averages to internal averages */
 // 'primary is needed to conform with the API for Loneos and Elixir, but is not used
-Average *Average_Panstarrs_DEV_1_ToInternal (Average_Panstarrs_DEV_1 *in, int Nvalues, SecFilt **primary) {
-
-  int i;
+Average *Average_Panstarrs_DEV_1_ToInternal (Average_Panstarrs_DEV_1 *in, off_t Nvalues, SecFilt **primary) {
+
+  off_t i;
   Average *out;
 
@@ -156,7 +156,7 @@
 /* convert internal averages to panstarrs-format averages */
 // 'primary is needed to conform with the API for Loneos and Elixir, but is not used
-Average_Panstarrs_DEV_1 *AverageInternalTo_Panstarrs_DEV_1 (Average *in, int Nvalues, SecFilt *primary) {
-
-  int i;
+Average_Panstarrs_DEV_1 *AverageInternalTo_Panstarrs_DEV_1 (Average *in, off_t Nvalues, SecFilt *primary) {
+
+  off_t i;
   Average_Panstarrs_DEV_1 *out;
 
@@ -191,7 +191,7 @@
 
 /* convert panstarrs-format secfilts to internal secfilts */
-SecFilt *SecFilt_Panstarrs_DEV_1_ToInternal (SecFilt_Panstarrs_DEV_1 *in, int Nvalues) {
-
-  int i;
+SecFilt *SecFilt_Panstarrs_DEV_1_ToInternal (SecFilt_Panstarrs_DEV_1 *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt *out;
 
@@ -213,7 +213,7 @@
 
 /* convert internal secfilts to panstarrs-format secfilts */
-SecFilt_Panstarrs_DEV_1 *SecFiltInternalTo_Panstarrs_DEV_1 (SecFilt *in, int Nvalues) {
-
-  int i;
+SecFilt_Panstarrs_DEV_1 *SecFiltInternalTo_Panstarrs_DEV_1 (SecFilt *in, off_t Nvalues) {
+
+  off_t i;
   SecFilt_Panstarrs_DEV_1 *out;
 
@@ -231,7 +231,7 @@
 
 /* convert panstarrs-format images to internal images */
-Image *Image_Panstarrs_DEV_1_ToInternal (Image_Panstarrs_DEV_1 *in, int Nvalues) {
-
-  int i;
+Image *Image_Panstarrs_DEV_1_ToInternal (Image_Panstarrs_DEV_1 *in, off_t Nvalues) {
+
+  off_t i;
   Image *out;
 
@@ -297,7 +297,7 @@
 
 /* convert internal images to panstarrs-format images */
-Image_Panstarrs_DEV_1 *ImageInternalTo_Panstarrs_DEV_1 (Image *in, int Nvalues) {
-
-  int i;
+Image_Panstarrs_DEV_1 *ImageInternalTo_Panstarrs_DEV_1 (Image *in, off_t Nvalues) {
+
+  off_t i;
   Image_Panstarrs_DEV_1 *out;
 
Index: trunk/Ohana/src/libdvo/src/dvo_image.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_image.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_image.c	(revision 27435)
@@ -52,5 +52,5 @@
   /* test for NAXIS == 2 in line 3 */
   bzero (buffer, 241);
-  fseek (db[0].f, 0, SEEK_SET);
+  fseeko (db[0].f, 0, SEEK_SET);
   Nread = fread (buffer, 1, 240, db[0].f);
   if (Nread != 240) {
@@ -63,5 +63,5 @@
     return (FALSE);
   }
-  fseek (db[0].f, 0, SEEK_SET);
+  fseeko (db[0].f, 0, SEEK_SET);
 
   /* default values */
@@ -114,13 +114,13 @@
 }
 
-int dvo_image_addrows (FITS_DB *db, Image *new, int Nnew) {
-
-  int Nimages;
+int dvo_image_addrows (FITS_DB *db, Image *new, off_t Nnew) {
+
+  off_t Nimages;
 
   /* adjust header */
   Nimages = 0;
-  gfits_scan (&db[0].header, "NIMAGES", "%d", 1, &Nimages);
+  gfits_scan (&db[0].header, "NIMAGES", "%lld", 1, (long long *) &Nimages);
   Nimages += Nnew;
-  gfits_modify (&db[0].header, "NIMAGES", "%d", 1, Nimages);
+  gfits_modify (&db[0].header, "NIMAGES", "%lld", 1, (long long) Nimages);
 
   gfits_table_to_vtable (&db[0].ftable, &db[0].vtable, 0, 0);
@@ -195,5 +195,5 @@
   gfits_table_set_Image (&db[0].ftable, NULL, 0);
 
-  gfits_modify (&db[0].header, "NIMAGES", "%d", 1, 0);
+  gfits_modify (&db[0].header, "NIMAGES", "%lld", 1, 0LL);
   gfits_modify (&db[0].header, "ZERO_PT", "%lf", 1, ZeroPoint);
 
Index: trunk/Ohana/src/libdvo/src/dvo_image_raw.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_image_raw.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_image_raw.c	(revision 27435)
@@ -7,5 +7,5 @@
 int dvo_image_load_raw (FITS_DB *db, int VERBOSE, int FORCE_READ) {
 
-  int Nimage, Ndata, size, ImageSize, nbytes, Nbytes;
+  off_t Nimage, Ndata, size, ImageSize, nbytes, Nbytes;
   struct stat filestatus;
   char format[80], telescope[80];
@@ -39,5 +39,5 @@
   /* find number of images */
   Nimage = 0;
-  gfits_scan (&db[0].header, "NIMAGES", "%d", 1, &Nimage);
+  gfits_scan (&db[0].header, "NIMAGES", "%lld", 1, (long long *) &Nimage);
   if (stat (db[0].filename, &filestatus) == -1) {
     if (VERBOSE) fprintf (stderr, "ERROR: failed to get status of image catalog\n");
@@ -59,9 +59,9 @@
 
   /* check that filesize makes sense */
-  size = Nimage*ImageSize + db[0].header.size;
+  size = Nimage*ImageSize + db[0].header.datasize;
   if (size != filestatus.st_size) {
-    Ndata = (filestatus.st_size - db[0].header.size) / ImageSize;
+    Ndata = (filestatus.st_size - db[0].header.datasize) / ImageSize;
     if (VERBOSE) fprintf (stderr, "ERROR: image catalog has inconsistent size\n");
-    if (VERBOSE) fprintf (stderr, "header: %d, data: %d\n", Nimage, Ndata);
+    if (VERBOSE) fprintf (stderr, "header: %lld, data: %lld\n", (long long) Nimage, (long long) Ndata);
     if (!FORCE_READ) exit (1);
     Nimage = Ndata;
@@ -94,7 +94,7 @@
   } 
 
-  gfits_modify (&db[0].theader, "NAXIS2", "%d", 1, Nimage);
+  gfits_modify (&db[0].theader, "NAXIS2", "%lld", 1, (long long) Nimage);
   db[0].theader.Naxis[1] = Nimage;
-  db[0].ftable.size = gfits_data_size (&db[0].theader);
+  db[0].ftable.datasize = gfits_data_size (&db[0].theader);
   db[0].swapped = FALSE;  /* table does not have internal byte-order */
   return (TRUE);
@@ -104,16 +104,16 @@
 int dvo_image_update_raw (FITS_DB *db, int VERBOSE) {
 
-  int i, Nx, Ny, Nrow, Nbytes;
-  int status, start, offset;
-  int *row;
+  off_t i, Nx, Ny, Nrow, Nbytes, start, offset;
+  off_t status;
+  off_t *row;
 
-  if (VERBOSE) fprintf (stderr, "writing out %d images\n", db[0].vtable.Nrow);
+  if (VERBOSE) fprintf (stderr, "writing out %lld images\n", (long long) db[0].vtable.Nrow);
 
   /* position to start of file */
-  Fseek (db[0].f, 0, SEEK_SET);
+  fseeko (db[0].f, 0, SEEK_SET);
   
   /* write out complete header (no check on disk size?) */
-  status = fwrite (db[0].header.buffer, 1, db[0].header.size, db[0].f);
-  if (status != db[0].header.size) {
+  status = fwrite (db[0].header.buffer, 1, db[0].header.datasize, db[0].f);
+  if (status != db[0].header.datasize) {
     fprintf (stderr, "ERROR: failed writing data to image header\n");
     exit (1);
@@ -123,6 +123,6 @@
   Nrow = db[0].vtable.Nrow;
   row = db[0].vtable.row;
-  gfits_scan (db[0].vtable.header, "NAXIS1", "%d", 1, &Nx);
-  gfits_scan (db[0].vtable.header, "NAXIS2", "%d", 1, &Ny);
+  gfits_scan (db[0].vtable.header, "NAXIS1", "%lld", 1, (long long *) &Nx);
+  gfits_scan (db[0].vtable.header, "NAXIS2", "%lld", 1, (long long *) &Ny);
 
   /* file pointer is at beginning of desired table data */
@@ -131,5 +131,5 @@
   for (i = 0; i < Nrow; i++) {
     offset = start + Nx*row[i];
-    fseek (db[0].f, offset, SEEK_SET);
+    fseeko (db[0].f, offset, SEEK_SET);
     Nbytes = fwrite (db[0].vtable.buffer[i], sizeof (char), Nx, db[0].f);
     if (Nbytes != Nx) { return (FALSE); }
@@ -141,7 +141,8 @@
 int dvo_image_save_raw (FITS_DB *db, int VERBOSE) {
 
-  int status, Nx, Ny, size, Nbytes;
+  off_t Nx, Ny, size, Nbytes;
+  int status;
 
-  if (VERBOSE) fprintf (stderr, "writing out %d images\n", db[0].theader.Naxis[1]);
+  if (VERBOSE) fprintf (stderr, "writing out %lld images\n", (long long) db[0].theader.Naxis[1]);
 
   /* position to start of file */
@@ -149,12 +150,12 @@
   
   /* write out complete header (no check on disk size?) */
-  status = fwrite (db[0].header.buffer, 1, db[0].header.size, db[0].f);
-  if (status != db[0].header.size) {
+  status = fwrite (db[0].header.buffer, 1, db[0].header.datasize, db[0].f);
+  if (status != db[0].header.datasize) {
     fprintf (stderr, "ERROR: failed writing data to image header\n");
     exit (1);
   }
 
-  gfits_scan (db[0].ftable.header, "NAXIS1", "%d", 1, &Nx);
-  gfits_scan (db[0].ftable.header, "NAXIS2", "%d", 1, &Ny);
+  gfits_scan (db[0].ftable.header, "NAXIS1", "%lld", 1, (long long *) &Nx);
+  gfits_scan (db[0].ftable.header, "NAXIS2", "%lld", 1, (long long *) &Ny);
   size = Nx * Ny;
   Nbytes = fwrite (db[0].ftable.buffer, sizeof(char), size, db[0].f);
Index: trunk/Ohana/src/libdvo/src/dvo_util.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_util.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvo_util.c	(revision 27435)
@@ -18,4 +18,5 @@
 
     memset(config, 0, sizeof(dvoConfig));
+    return config;
 }
 
@@ -98,5 +99,5 @@
     }
 
-    char *catdir, filename[256];
+    char filename[256];
   
     sprintf (filename, "%s/Images.dat", dvoConfig->catdir);
@@ -136,6 +137,4 @@
 Image *dvoImageByExternID(dvoConfig *dvoConfig, int sourceID, int externID)
 {
-    Image *images;
-    int Nimage;
     int i;
     
@@ -199,12 +198,9 @@
 }
 
-int dvoGetDetections(SkyList *skylist, int imageID, dvoDetection **results, int *pMaxDetID)
-{
-  int QUIET = 0;
-  int FULL_OUTPUT = 0;
+off_t dvoGetDetections(SkyList *skylist, int imageID, dvoDetection **results, int *pMaxDetID)
+{
   int GetMeasures = 1;
-  int SaveVectors = 0;
   int reg;
-  int Ndetect = 0;
+  off_t Ndetect = 0;
 
   int detectionsArrayLength = 1000;
@@ -226,8 +222,7 @@
       dvo_catalog_unlock (&catalog);
 
-      int Nstars = catalog.Naverage;
-      int Nmeasure = catalog.Nmeasure;
-
-      int i;
+      off_t Nmeasure = catalog.Nmeasure;
+
+      off_t i;
       for (i=0; i< Nmeasure; i++) {
         Measure *m = catalog.measure + i;
@@ -265,5 +260,5 @@
 
       memset(sorted, 0, sizeof(dvoDetection) * *pMaxDetID);
-      int i;
+      off_t i;
       for (i = 0; i < Ndetect; i++) {
            sorted[detections[i].meas.detID] = detections[i];
Index: trunk/Ohana/src/libdvo/src/dvosorts.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvosorts.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/dvosorts.c	(revision 27435)
@@ -4,5 +4,5 @@
 
 /* values are ave[i].R, ave[i].D, ave[i].M */
-void sortave (Average *ave, int N) {
+void sortave (Average *ave, off_t N) {
 
 # define SWAPFUNC(A,B){ Average tmp; tmp = ave[A]; ave[A] = ave[B]; ave[B] = tmp; }
@@ -17,5 +17,5 @@
 
 /* sort subset by image[subset[i]].tzero */
-void sort_image_subset (Image *image, int *subset, int N) {
+void sort_image_subset (Image *image, off_t *subset, off_t N) {
 
 # define SWAPFUNC(A,B){ int tmp; tmp = subset[A]; subset[A] = subset[B]; subset[B] = tmp; }
@@ -30,7 +30,7 @@
 
 /* sort a coordinate pair (X,Y) and the associated index (S) */
-void sort_coords_index (double *X, double *Y, int *S, int N) {
+void sort_coords_index (double *X, double *Y, off_t *S, off_t N) {
   
-# define SWAPFUNC(A,B){ double dtmp; int itmp; \
+# define SWAPFUNC(A,B){ double dtmp; off_t itmp; \
   dtmp = X[A]; X[A] = X[B]; X[B] = dtmp; \
   dtmp = Y[A]; Y[A] = Y[B]; Y[B] = dtmp; \
@@ -46,5 +46,5 @@
 }
 
-void sort_regions (SkyRegion *region, int N) {
+void sort_regions (SkyRegion *region, off_t N) {
 
 # define SWAPFUNC(A,B){ SkyRegion tmp; tmp = region[A]; region[A] = region[B]; region[B] = tmp; }
@@ -57,17 +57,2 @@
 
 }
-
-# if (0)
-// deprecated along with Stars as an autocode type
-void sort_stars_ra (Stars *stars, int N) {
-
-# define SWAPFUNC(A,B){ Stars tmp; tmp = stars[A]; stars[A] = stars[B]; stars[B] = tmp; }
-# define COMPARE(A,B)(stars[A].R < stars[B].R)
-
-  OHANA_SORT (N, COMPARE, SWAPFUNC);
-
-# undef SWAPFUNC
-# undef COMPARE
-
-}
-# endif
Index: trunk/Ohana/src/libdvo/src/fits_db.c
===================================================================
--- trunk/Ohana/src/libdvo/src/fits_db.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/fits_db.c	(revision 27435)
@@ -92,8 +92,8 @@
 }
 
-/* load the data from Nrows from table starting at start; load header, etc if needed */
-int gfits_db_load_segment (FITS_DB *db, int start, int Nrows) {
-
-  int Nskip;
+/* load the Nrows data from table starting at start; load header, etc if needed */
+int gfits_db_load_segment (FITS_DB *db, off_t start, off_t Nrows) {
+
+  off_t Nskip;
 
   /* database name must be set first */
@@ -119,5 +119,5 @@
     }
   } else {
-    Nskip = db[0].header.size;
+    Nskip = db[0].header.datasize;
     Fseek (db[0].f, Nskip, SEEK_CUR);
   }
@@ -141,5 +141,5 @@
     }
   } else {
-    Nskip = db[0].header.size;
+    Nskip = db[0].header.datasize;
     Fseek (db[0].f, Nskip, SEEK_CUR);
   }
Index: trunk/Ohana/src/libdvo/src/mosaic_astrom.c
===================================================================
--- trunk/Ohana/src/libdvo/src/mosaic_astrom.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/mosaic_astrom.c	(revision 27435)
@@ -1,19 +1,22 @@
 # include <dvo.h>
 
+off_t getDISentry (e_time start, e_time stop, e_time *startMos, off_t *indexMos, off_t Nmosaic);
+void SortDISindex (e_time *S, off_t *I, off_t N);
+
 /* chip-match table: j = ChipMatch[i], images[j] is DIS for images[i] WRP */
 
-static int    iDIS = -1;      // DIS entry in ChipMatch[]
-static int    Ndis = 0;
-static int    *DISentry = NULL;
+static off_t  iDIS = -1;      // DIS entry in ChipMatch[]
+static off_t  Ndis = 0;
+static off_t  *DISentry = NULL;
 static e_time *DIStzero = NULL;
-static int    *ChipMatch = NULL;
+static off_t  *ChipMatch = NULL;
 
 /* what is the currently registered mosaic image? */
-int GetRegisteredMosaic () {
+off_t GetRegisteredMosaic () {
   return (iDIS);
 }
 
 /* given an image array and a current entry of type WRP, find matching DIS & Register it */
-int FindMosaicForImage (Image *images, int Nimages, int entry) {
+int FindMosaicForImage (Image *images, off_t Nimages, off_t entry) {
 
   int status;
@@ -28,8 +31,8 @@
 
 /* given an image array and a current entry of type WRP, find matching DIS & Register it */
-int FindMosaicForImage_TableSearch (Image *images, int Nimages, int entry) {
+int FindMosaicForImage_TableSearch (Image *images, off_t Nimages, off_t entry) {
 
   e_time tzero;
-  int i;
+  off_t i;
 
   /* search backwards for image with same time and type DIS */
@@ -65,11 +68,11 @@
 
 /* given an image array and a current entry of type WRP, find matching DIS & Register it */
-int FindMosaicForImage_MatchSearch (Image *images, int Nimages, int entry) {
-
-  int N;
+int FindMosaicForImage_MatchSearch (Image *images, off_t Nimages, off_t entry) {
+
+  off_t N;
 
   if (strcmp(&images[entry].coords.ctype[4], "-WRP")) {
     /* not a wrp image, do nothing */
-    return (TRUE); /* error or not */
+    return (TRUE); /* error or not? */
   }
 
@@ -85,7 +88,7 @@
 }
 
-int BuildChipMatch (Image *images, int Nimages) {
-
-  int i, j, NDIS;
+int BuildChipMatch_old (Image *images, off_t Nimages) {
+
+  off_t i, j, NDIS;
 
   if (DISentry != NULL) free (DISentry);
@@ -96,5 +99,5 @@
   Ndis = 0;
   NDIS = 100;
-  ALLOCATE (DISentry, int, NDIS);
+  ALLOCATE (DISentry, off_t, NDIS);
   ALLOCATE (DIStzero, e_time, NDIS);
 
@@ -106,5 +109,5 @@
     if (Ndis >= NDIS) {
       NDIS += 100;
-      REALLOCATE (DISentry, int, NDIS);
+      REALLOCATE (DISentry, off_t, NDIS);
       REALLOCATE (DIStzero, e_time, NDIS);
     }
@@ -112,5 +115,5 @@
 
   /* find all matched WRP images */
-  ALLOCATE (ChipMatch, int, Nimages);
+  ALLOCATE (ChipMatch, off_t, Nimages);
   for (i = 0; i < Nimages; i++) {
     ChipMatch[i] = -1;
@@ -131,2 +134,97 @@
   return (TRUE);
 }
+
+int BuildChipMatch (Image *images, off_t Nimages) {
+
+  off_t i, j, NDIS;
+
+  if (DISentry != NULL) free (DISentry);
+  if (DIStzero != NULL) free (DIStzero);
+  if (ChipMatch != NULL) free (ChipMatch);
+
+  // allocate containers for DIS indexing
+  Ndis = 0;
+  NDIS = 100;
+  ALLOCATE (DISentry, off_t, NDIS);
+  ALLOCATE (DIStzero, e_time, NDIS);
+
+  // find all DIS images, save tzero (& instrument) 
+  for (i = 0; i < Nimages; i++) {
+    if (strcmp(&images[i].coords.ctype[4], "-DIS")) continue;
+    DISentry[Ndis] = i;
+    DIStzero[Ndis] = images[i].tzero;
+    Ndis ++;
+    if (Ndis >= NDIS) {
+      NDIS += 100;
+      REALLOCATE (DISentry, off_t, NDIS);
+      REALLOCATE (DIStzero, e_time, NDIS);
+    }
+  }
+
+  // sort the index, start, and stop by the start times:
+  SortDISindex (DIStzero, DISentry, Ndis);
+
+  /* find all matched WRP images */
+  ALLOCATE (ChipMatch, off_t, Nimages);
+  for (i = 0; i < Nimages; i++) {
+    ChipMatch[i] = -1;
+    if (strcmp(&images[i].coords.ctype[4], "-WRP")) continue;
+
+    j = getDISentry (images[i].tzero, images[i].tzero + (int) images[i].exptime, DIStzero, DISentry, Ndis);
+    if (j == -1) {
+      fprintf (stderr, "WARNING: can't find matching mosaic \n");
+      ChipMatch[i] = -2;
+      continue;
+    }
+    if (j >= Nimages) abort();
+
+    ChipMatch[i] = j;
+  }
+  return (TRUE);
+}
+
+off_t getDISentry (e_time start, e_time stop, e_time *startMos, off_t *indexMos, off_t Nmosaic) {
+
+  // use bisection to find the overlapping mosaic
+
+  off_t Nlo, Nhi, N;
+
+  // find the last mosaic before start
+  Nlo = 0; Nhi = Nmosaic;
+  while (Nhi - Nlo > 10) {
+    N = 0.5*(Nlo + Nhi);
+    if (startMos[N] < start) {
+      Nlo = MAX(N, 0);
+    } else {
+      Nhi = MIN(N + 1, Nmosaic);
+    }
+  }
+
+  // check for the matched mosaic starting from Nlo 
+  // we may have to go much beyond Nlo since stop is not sorted
+  // can we use a sorted version of stop to check when we are beyond the valid range??
+  for (N = Nlo; N < Nmosaic; N++) { 
+    if (startMos[N] < start) continue;
+    if (startMos[N] > stop) return (-1);
+    return (indexMos[N]);
+  }
+
+  return (-1);
+}
+
+// sort two times vectors and an index by first time vector
+void SortDISindex (e_time *S, off_t *I, off_t N) {
+
+# define SWAPFUNC(A,B){ e_time tmp_t; off_t tmp_i; \
+  tmp_t = S[A]; S[A] = S[B]; S[B] = tmp_t; \
+  tmp_i = I[A]; I[A] = I[B]; I[B] = tmp_i; \
+}
+# define COMPARE(A,B)(S[A] < S[B])
+
+  OHANA_SORT (N, COMPARE, SWAPFUNC);
+
+# undef SWAPFUNC
+# undef COMPARE
+
+}
+
Index: trunk/Ohana/src/libdvo/src/skyregion_io.c
===================================================================
--- trunk/Ohana/src/libdvo/src/skyregion_io.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/skyregion_io.c	(revision 27435)
@@ -126,4 +126,10 @@
 
   /* third option: GSCFILE */
+
+  if (gscfile == NULL) {
+    fprintf (stderr, "error loading sky table from existing db (%s)\n", catdir);
+    return (NULL);
+  }
+
   sky = SkyTableFromGSC (gscfile, depth, verbose);
   if (sky == NULL) {
Index: trunk/Ohana/src/libdvo/src/skyregion_ops.c
===================================================================
--- trunk/Ohana/src/libdvo/src/skyregion_ops.c	(revision 27025)
+++ trunk/Ohana/src/libdvo/src/skyregion_ops.c	(revision 27435)
@@ -386,7 +386,5 @@
 SkyList *SkyListChildrenByBounds_List (SkyList *table, int depth, double Rmin, double Rmax, double Dmin, double Dmax) {
 
-  int i, j, Ns, Ne, Nnew, NNEW;
-  int append;
-  SkyList *children;
+  int i, Nnew, NNEW;
   SkyList *list;
   SkyRegion **region;
