Index: /branches/eam_branches/ipp-20130207/Ohana/src/addstar/src/resort_unthreaded.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/addstar/src/resort_unthreaded.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/addstar/src/resort_unthreaded.c	(revision 35234)
@@ -40,5 +40,5 @@
   }
 
-  resort_unthreaded_catalogs (options, skylist, 0, NULL);
+  resort_unthreaded_catalogs (options, skylist, hostID, hostpath);
 
   gettimeofday (&stop, NULL);
Index: /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/include/dvopsps.h
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/include/dvopsps.h	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/include/dvopsps.h	(revision 35234)
@@ -31,4 +31,6 @@
 char        *HOSTDIR;
 int          VERBOSE;
+
+int          SAVE_REMOTE;
 
 int          PARALLEL;
Index: /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/src/initialize_dvopsps.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/src/initialize_dvopsps.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/src/initialize_dvopsps.c	(revision 35234)
@@ -104,4 +104,10 @@
   if ((N = get_argument (argc, argv, "-v"))) {
     VERBOSE = TRUE;
+    remove_argument (N, &argc, argv);
+  }
+
+  SAVE_REMOTE = TRUE;
+  if ((N = get_argument (argc, argv, "-insert-remote"))) {
+    SAVE_REMOTE = FALSE;
     remove_argument (N, &argc, argv);
   }
@@ -260,4 +266,10 @@
   }
 
+  SAVE_REMOTE = TRUE;
+  if ((N = get_argument (argc, argv, "-insert-remote"))) {
+    SAVE_REMOTE = FALSE;
+    remove_argument (N, &argc, argv);
+  }
+
   HOST_ID = 0;
   if ((N = get_argument (argc, argv, "-hostID"))) {
Index: /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/src/insert_detections_dvopsps.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/src/insert_detections_dvopsps.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/src/insert_detections_dvopsps.c	(revision 35234)
@@ -1,5 +1,5 @@
 # include "dvopsps.h"
 # define USE_MYSQL 1
-# define SAVE_REMOTE 1
+// # define SAVE_REMOTE 1
 
 # define MARKTIME(MSG,...) {			\
@@ -110,4 +110,9 @@
   HostTable *table = HostTableLoad (CATDIR, sky->hosts);
 
+  char uniquer[12];
+  int TIME = time(NULL);
+  int PID = getpid();
+  snprintf (uniquer, 12, "%05d.%05d", PID, TIME % 100000);
+
   int i;
   for (i = 0; i < table->Nhosts; i++) {
@@ -121,5 +126,5 @@
       // XXX need to uniquify the result file
       ALLOCATE (table->hosts[i].results, char, 1024);
-      snprintf (table->hosts[i].results, 1024, "%s/dvopsps_detections.dat", table->hosts[i].pathname);
+      snprintf (table->hosts[i].results, 1024, "%s/dvopsps.%s.det.dat", table->hosts[i].pathname, uniquer);
     }
 
@@ -232,4 +237,8 @@
 }
 
+# define PRINT_FLOAT(BUFFER,FIELD,FORMAT)		  \
+  if (!isfinite(FIELD)) PrintIOBuffer (BUFFER, "NULL, "); \
+  else PrintIOBuffer (BUFFER, FORMAT, FIELD); 
+
 int insert_detections_mysql_detvalue (IOBuffer *buffer, Detections *detection) {
 
@@ -240,12 +249,12 @@
   PrintIOBuffer (buffer, "%lu, ", detection->objID);	  // objID
   PrintIOBuffer (buffer, "%u, ", detection->flags);	  // flags
-  if (isnan(detection->zp))      PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%f, ",  detection->zp);	  // zp
-  if (isnan(detection->zpErr))   PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%f, ",  detection->zpErr);	  // zpErr
-  if (isnan(detection->airMass)) PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%f, ",  detection->airMass);	  // 
-  if (isnan(detection->expTime)) PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%f, ",  detection->expTime);	  // expTime
-  if (isnan(detection->ra))      PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%lf, ", detection->ra);	  // ra
-  if (isnan(detection->dec))     PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%lf, ", detection->dec);	  // dec
-  if (isnan(detection->raErr))   PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%f, ",  detection->raErr);	  // estimate of raErr
-  if (isnan(detection->decErr))  PrintIOBuffer (buffer, "NULL, "); else PrintIOBuffer (buffer, "%f),\n",  detection->decErr);	  // estimate of decErr
+  PRINT_FLOAT(buffer, detection->zp,      "%.6f, ");
+  PRINT_FLOAT(buffer, detection->zpErr,   "%.6f, ");
+  PRINT_FLOAT(buffer, detection->airMass, "%.6f, ");
+  PRINT_FLOAT(buffer, detection->expTime, "%.6f, ");
+  PRINT_FLOAT(buffer, detection->ra,      "%.8f, ");
+  PRINT_FLOAT(buffer, detection->dec,     "%.8f, ");
+  PRINT_FLOAT(buffer, detection->raErr,   "%.6f, ");
+  PRINT_FLOAT(buffer, detection->decErr,  "%.6f),\n");
   return TRUE;
 }
Index: /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/src/insert_detections_dvopsps_catalog.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/src/insert_detections_dvopsps_catalog.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/src/insert_detections_dvopsps_catalog.c	(revision 35234)
@@ -153,26 +153,55 @@
 }
 
+# define PRINT_FLOAT(BUFFER,FIELD,FORMAT)		  \
+  if (isinf(FIELD) || isnan(FIELD)) PrintIOBuffer (BUFFER, "NULL, ");	\
+  else PrintIOBuffer (BUFFER, FORMAT, FIELD); 
+
 int insert_detections_mysql_value (IOBuffer *buffer, Average *average, Measure *measure) {
 
   // XXX I am changing the def of ippObjID if I use the code below
   PhotCode *code = GetPhotcodebyCode(measure->photcode);
-  PrintIOBuffer (buffer, "    (%d, %u, %lu, %lu, %lu, %u, %f, %f, %f, %f, %lf, %lf, %f, %f),\n",
-		 measure->imageID,    // imageID
-		 measure->detID,   // ippDetectID
-		 measure->extID,   // detectID
-		 ((uint64_t)average->catID * 1000000000) + (uint64_t)average->objID, // ippObjID
-// NOTE: this is better, but the above is the current ippToPsps value
-//				((uint64_t)average->catID << 32) + (uint64_t)average->objID, // ippObjID
-		 average->extID,   // objID
-		 measure->dbFlags,  // flags
-		 code->C * 0.001 + code->K * (measure->airmass - 1) - measure->Mcal,   // zp
-		 measure->dMcal,    // zpErr
-		 measure->airmass,
-		 pow(10.0, 0.4 * measure->dt),    // expTime
-		 average->R - measure->dR / 3600.,    // ra
-		 average->D - measure->dR / 3600.,    // dec
-		 measure->dXccd * 0.01 * fabs(measure->pltscale), // estimate of raErr
-		 measure->dYccd * 0.01 * fabs(measure->pltscale) // estimate of decErr
-    ); 
+  // PrintIOBuffer (buffer, "    (%d, %u, %lu, %lu, %lu, %u, %f, %f, %f, %f, %lf, %lf, %f, %f),\n",
+  // 		 measure->imageID,    // imageID
+  // 		 measure->detID,   // ippDetectID
+  // 		 measure->extID,   // detectID
+  // 		 ((uint64_t)average->catID * 1000000000) + (uint64_t)average->objID, // ippObjID
+  // 		 // NOTE: this is better, but the above is the current ippToPsps value
+  // 		 // ((uint64_t)average->catID << 32) + (uint64_t)average->objID, // ippObjID
+  // 		 average->extID,   // objID
+  // 		 measure->dbFlags,  // flags
+  // 		 code->C * 0.001 + code->K * (measure->airmass - 1) - measure->Mcal,   // zp
+  // 		 measure->dMcal,    // zpErr
+  // 		 measure->airmass,
+  // 		 pow(10.0, 0.4 * measure->dt),    // expTime
+  // 		 average->R - measure->dR / 3600.,    // ra
+  // 		 average->D - measure->dR / 3600.,    // dec
+  // 		 measure->dXccd * 0.01 * fabs(measure->pltscale), // estimate of raErr
+  // 		 measure->dYccd * 0.01 * fabs(measure->pltscale) // estimate of decErr
+  //   ); 
+  
+  PrintIOBuffer (buffer, "(%d, ", measure->imageID);	  // imageID
+  PrintIOBuffer (buffer, "%u, ", measure->detID); // ippDetectID
+  PrintIOBuffer (buffer, "%lu, ", measure->extID);	  // detectID
+  PrintIOBuffer (buffer, "%lu, ", ((uint64_t)average->catID * 1000000000) + (uint64_t)average->objID);	  // ippObjID
+  // NOTE: the following is better, but the above is the current ippToPsps value
+  // ((uint64_t)average->catID << 32) + (uint64_t)average->objID, // ippObjID
+  PrintIOBuffer (buffer, "%lu, ", average->extID);	  // objID
+  PrintIOBuffer (buffer, "%u, ", measure->dbFlags);	  // flags
+  float zp = code->C * 0.001 + code->K * (measure->airmass - 1) - measure->Mcal;
+  float exptime = pow(10.0, 0.4 * measure->dt);
+  double ra  = average->R - measure->dR / 3600.0;
+  double dec = average->D - measure->dD / 3600.0;
+  double dR = measure->dXccd * 0.01 * fabs(measure->pltscale);
+  double dD = measure->dYccd * 0.01 * fabs(measure->pltscale);
+
+  PRINT_FLOAT(buffer, zp,               "%.6f, ");
+  PRINT_FLOAT(buffer, measure->dMcal,   "%.6f, ");
+  PRINT_FLOAT(buffer, measure->airmass, "%.6f, ");
+  PRINT_FLOAT(buffer, exptime,          "%.6f, ");
+  PRINT_FLOAT(buffer, ra,               "%.8f, ");
+  PRINT_FLOAT(buffer, dec,              "%.8f, ");
+  PRINT_FLOAT(buffer, dR,               "%.6f, ");
+  PRINT_FLOAT(buffer, dD,               "%.6f),\n");
+  
   return TRUE;
 }
Index: /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/src/insert_objects_dvopsps_catalog.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/src/insert_objects_dvopsps_catalog.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/dvopsps/src/insert_objects_dvopsps_catalog.c	(revision 35234)
@@ -47,4 +47,6 @@
     // XXX check return status
     insert_objects_mysql_value (&ave_buffer, &sec_buffer, &average[i], &secfilt[i*Nsecfilt], Nsecfilt);
+
+    // fprintf (stderr, "%f : %d %d %d\n", average[i].ChiSqPM, isinf(average[i].ChiSqPM), isnan(average[i].ChiSqPM), isfinite(average[i].ChiSqPM));
 
     // Average is a bigger table, but Nsecfilt*secfilt might be bigger, so check both
@@ -251,4 +253,8 @@
 }
 
+# define PRINT_FLOAT(BUFFER,FIELD,FORMAT)		  \
+  if (isinf(FIELD) || isnan(FIELD)) PrintIOBuffer (BUFFER, "NULL, ");	\
+  else PrintIOBuffer (BUFFER, FORMAT, FIELD); 
+
 int insert_objects_mysql_value (IOBuffer *ave_buffer, IOBuffer *sec_buffer, Average *average, SecFilt *secfilt, int Nsecfilt) {
 
@@ -257,22 +263,22 @@
 // XXX this bit could/should be autocoded...
   PrintIOBuffer (ave_buffer, " (");
-  if (isnan(average->R))              PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%lf, ", average->R);              
-  if (isnan(average->D))              PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%lf, ", average->D);               
-  if (isnan(average->dR))             PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->dR);             
-  if (isnan(average->dD))             PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->dD);             
-  if (isnan(average->uR))             PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->uR);             
-  if (isnan(average->uD))             PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->uD);             
-  if (isnan(average->duR))            PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->duR);            
-  if (isnan(average->duD))            PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->duD);            
-  if (isnan(average->P))              PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->P);              
-  if (isnan(average->dP))             PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->dP);             
-  if (isnan(average->ChiSqAve))       PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->ChiSqAve);       
-  if (isnan(average->ChiSqPM))        PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->ChiSqPM);        
-  if (isnan(average->ChiSqPar))       PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->ChiSqPar);       
+  PRINT_FLOAT(ave_buffer, average->R,  	     "%.8f, ");  // 0.036 mas precision 
+  PRINT_FLOAT(ave_buffer, average->D,  	     "%.8f, ");  // 0.036 mas precision 
+  PRINT_FLOAT(ave_buffer, average->dR, 	     "%.5f, ");  // 0.010 mas precision
+  PRINT_FLOAT(ave_buffer, average->dD, 	     "%.5f, ");  // 0.010 mas precision
+  PRINT_FLOAT(ave_buffer, average->uR, 	     "%.5f, ");  // 0.010 mas/yr precision
+  PRINT_FLOAT(ave_buffer, average->uD, 	     "%.5f, ");
+  PRINT_FLOAT(ave_buffer, average->duR,      "%.5f, ");
+  PRINT_FLOAT(ave_buffer, average->duD,      "%.5f, ");
+  PRINT_FLOAT(ave_buffer, average->P,        "%.5f, ");
+  PRINT_FLOAT(ave_buffer, average->dP,       "%.5f, ");
+  PRINT_FLOAT(ave_buffer, average->ChiSqAve, "%.4f, ");
+  PRINT_FLOAT(ave_buffer, average->ChiSqPM,  "%.4f, ");
+  PRINT_FLOAT(ave_buffer, average->ChiSqPar, "%.4f, ");
   PrintIOBuffer (ave_buffer, "%d, ",  average->Tmean);          
   PrintIOBuffer (ave_buffer, "%d, ",  average->Trange);         
-  if (isnan(average->psfQF))          PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->psfQF);          
-  if (isnan(average->psfQFperf))      PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->psfQFperf);      
-  if (isnan(average->stargal))        PrintIOBuffer (ave_buffer, "NULL, "); else PrintIOBuffer (ave_buffer, "%f, ",  average->stargal);        
+  PRINT_FLOAT(ave_buffer, average->psfQF,     "%.3f, ");
+  PRINT_FLOAT(ave_buffer, average->psfQFperf, "%.3f, ");
+  PRINT_FLOAT(ave_buffer, average->stargal,   "%.3f, ");
   PrintIOBuffer (ave_buffer, "%hu, ", average->Npos);           
   PrintIOBuffer (ave_buffer, "%hu, ", average->Nmeasure);       
@@ -293,14 +299,14 @@
   for (i = 0; i < Nsecfilt; i++) {
     PrintIOBuffer (sec_buffer, " (");
-    if (isnan(secfilt->M))         PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->M);           
-    if (isnan(secfilt->Map))       PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->Map);         
-    if (isnan(secfilt->Mkron))     PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->Mkron);       
-    if (isnan(secfilt->dMkron))    PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->dMkron);      
-    if (isnan(secfilt->dM))        PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->dM);          
-    if (isnan(secfilt->Xm))        PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->Xm);          
-    if (isnan(secfilt->FluxPSF))   PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->FluxPSF);     
-    if (isnan(secfilt->dFluxPSF))  PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->dFluxPSF);    
-    if (isnan(secfilt->FluxKron))  PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->FluxKron);    
-    if (isnan(secfilt->dFluxKron)) PrintIOBuffer (sec_buffer, "NULL, "); else PrintIOBuffer (sec_buffer, "%f, ", secfilt->dFluxKron);   
+    PRINT_FLOAT(sec_buffer, secfilt->M,      	"%.6f, "); // umag precision
+    PRINT_FLOAT(sec_buffer, secfilt->Map,    	"%.6f, "); // umag precision
+    PRINT_FLOAT(sec_buffer, secfilt->Mkron,  	"%.6f, "); // umag precision
+    PRINT_FLOAT(sec_buffer, secfilt->dMkron, 	"%.6f, "); // umag precision
+    PRINT_FLOAT(sec_buffer, secfilt->dM,     	"%.6f, "); // umag precision
+    PRINT_FLOAT(sec_buffer, secfilt->Xm,     	"%.6f, ");
+    PRINT_FLOAT(sec_buffer, secfilt->FluxPSF,   "%.6e, "); // 0.36 umag precision
+    PRINT_FLOAT(sec_buffer, secfilt->dFluxPSF,  "%.6e, "); // 0.36 umag precision
+    PRINT_FLOAT(sec_buffer, secfilt->FluxKron,  "%.6e, "); // 0.36 umag precision
+    PRINT_FLOAT(sec_buffer, secfilt->dFluxKron, "%.6e, "); // 0.36 umag precision
     PrintIOBuffer (sec_buffer, "%u,  ", secfilt->flags);       
     PrintIOBuffer (sec_buffer, "%hd, ", secfilt->Ncode);        
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/elixir_defs.h
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/elixir_defs.h	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/elixir_defs.h	(revision 35234)
@@ -1,3 +1,3 @@
-Image 		       	*Image_Elixir_ToInternal (Image_Elixir *in, off_t Nvalues);
+Image 		       	*Image_Elixir_ToInternal (Image_Elixir *in, off_t Nvalues, off_t Nalloc);
 Image_Elixir 	       	*ImageInternalTo_Elixir (Image *in, off_t Nvalues);
 Average 	       	*Average_Elixir_ToInternal (Average_Elixir *in, off_t Nvalues, SecFilt **primary);
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/loneos_defs.h
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/loneos_defs.h	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/loneos_defs.h	(revision 35234)
@@ -1,3 +1,3 @@
-Image 		       	*Image_Loneos_ToInternal (Image_Loneos *in, off_t Nvalues);
+Image 		       	*Image_Loneos_ToInternal (Image_Loneos *in, off_t Nvalues, off_t Nalloc);
 Image_Loneos 	       	*ImageInternalTo_Loneos (Image *in, off_t Nvalues);
 Average                	*Average_Loneos_ToInternal (Average_Loneos *in, off_t Nvalues, SecFilt **primary);
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/panstarrs_dev_0_defs.h
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/panstarrs_dev_0_defs.h	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/panstarrs_dev_0_defs.h	(revision 35234)
@@ -1,3 +1,3 @@
-Image 		       	*Image_Panstarrs_DEV_0_ToInternal (Image_Panstarrs_DEV_0 *in, off_t Nvalues);
+Image 		       	*Image_Panstarrs_DEV_0_ToInternal (Image_Panstarrs_DEV_0 *in, off_t Nvalues, off_t Nalloc);
 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);
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/panstarrs_dev_1_defs.h
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/panstarrs_dev_1_defs.h	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/panstarrs_dev_1_defs.h	(revision 35234)
@@ -1,3 +1,3 @@
-Image 		       	*Image_Panstarrs_DEV_1_ToInternal (Image_Panstarrs_DEV_1 *in, off_t Nvalues);
+Image 		       	*Image_Panstarrs_DEV_1_ToInternal (Image_Panstarrs_DEV_1 *in, off_t Nvalues, off_t Nalloc);
 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);
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_dev_1_defs.h
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_dev_1_defs.h	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_dev_1_defs.h	(revision 35234)
@@ -1,3 +1,3 @@
-Image 		       	*Image_PS1_DEV_1_ToInternal (Image_PS1_DEV_1 *in, off_t Nvalues);
+Image 		       	*Image_PS1_DEV_1_ToInternal (Image_PS1_DEV_1 *in, off_t Nvalues, off_t Nalloc);
 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);
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_dev_2_defs.h
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_dev_2_defs.h	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_dev_2_defs.h	(revision 35234)
@@ -1,3 +1,3 @@
-Image 		       	*Image_PS1_DEV_2_ToInternal (Image_PS1_DEV_2 *in, off_t Nvalues);
+Image 		       	*Image_PS1_DEV_2_ToInternal (Image_PS1_DEV_2 *in, off_t Nvalues, off_t Nalloc);
 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);
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_dev_3_defs.h
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_dev_3_defs.h	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_dev_3_defs.h	(revision 35234)
@@ -1,3 +1,3 @@
-Image 		       	*Image_PS1_DEV_3_ToInternal (Image_PS1_DEV_3 *in, off_t Nvalues);
+Image 		       	*Image_PS1_DEV_3_ToInternal (Image_PS1_DEV_3 *in, off_t Nvalues, off_t Nalloc);
 Image_PS1_DEV_3  	*ImageInternalTo_PS1_DEV_3 (Image *in, off_t Nvalues);
 
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_ref_defs.h
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_ref_defs.h	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_ref_defs.h	(revision 35234)
@@ -1,3 +1,3 @@
-Image 		       	*Image_PS1_REF_ToInternal (Image_PS1_REF *in, off_t Nvalues);
+Image 		       	*Image_PS1_REF_ToInternal (Image_PS1_REF *in, off_t Nvalues, off_t Nalloc);
 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);
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_v1_defs.h
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_v1_defs.h	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_v1_defs.h	(revision 35234)
@@ -1,3 +1,3 @@
-Image 		       	*Image_PS1_V1_ToInternal (Image_PS1_V1 *in, off_t Nvalues);
+Image 		       	*Image_PS1_V1_ToInternal (Image_PS1_V1 *in, off_t Nvalues, off_t Nalloc);
 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);
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_v2_defs.h
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_v2_defs.h	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_v2_defs.h	(revision 35234)
@@ -1,3 +1,3 @@
-Image 		       	*Image_PS1_V2_ToInternal (Image_PS1_V2 *in, off_t Nvalues);
+Image 		       	*Image_PS1_V2_ToInternal (Image_PS1_V2 *in, off_t Nvalues, off_t Nalloc);
 Image_PS1_V2    	*ImageInternalTo_PS1_V2 (Image *in, off_t Nvalues);
 Average 	       	*Average_PS1_V2_ToInternal (Average_PS1_V2 *in, off_t Nvalues, SecFilt **primary);
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_v3_defs.h
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_v3_defs.h	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_v3_defs.h	(revision 35234)
@@ -1,3 +1,3 @@
-Image 		       	*Image_PS1_V3_ToInternal (Image_PS1_V3 *in, off_t Nvalues);
+Image 		       	*Image_PS1_V3_ToInternal (Image_PS1_V3 *in, off_t Nvalues, off_t Nalloc);
 Image_PS1_V3    	*ImageInternalTo_PS1_V3 (Image *in, off_t Nvalues);
 Average 	       	*Average_PS1_V3_ToInternal (Average_PS1_V3 *in, off_t Nvalues, SecFilt **primary);
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_v4_defs.h
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_v4_defs.h	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/include/ps1_v4_defs.h	(revision 35234)
@@ -1,3 +1,3 @@
-Image 		       	*Image_PS1_V4_ToInternal (Image_PS1_V4 *in, off_t Nvalues);
+Image 		       	*Image_PS1_V4_ToInternal (Image_PS1_V4 *in, off_t Nvalues, off_t Nalloc);
 Image_PS1_V4    	*ImageInternalTo_PS1_V4 (Image *in, off_t Nvalues);
 Average 	       	*Average_PS1_V4_ToInternal (Average_PS1_V4 *in, off_t Nvalues, SecFilt **primary);
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert.c	(revision 35234)
@@ -327,4 +327,6 @@
 /*** Image Conversions ***/
 
+// I have loaded the disk db table and now I want to convert to the internal format
+// (Image structure), but I onyl 
 int FtableToImage (FTable *ftable, Header *theader, char *format) {
 
@@ -340,5 +342,6 @@
       exit (2);
     }
-    ftable[0].buffer = (char *) Image_Elixir_ToInternal (tmpimage, Nimage);
+    off_t Nalloc = gfits_data_pad_size(Nimage*sizeof(Image));
+    ftable[0].buffer = (char *) Image_Elixir_ToInternal (tmpimage, Nimage, Nalloc);
     free (tmpimage);
     gfits_free_header (theader);
@@ -365,5 +368,6 @@
       exit (2); \
     } \
-    ftable[0].buffer = (char *) Image_##TYPE##_ToInternal (tmpimage, Nimage); \
+    off_t Nalloc = gfits_data_pad_size(Nimage*sizeof(Image));		\
+    ftable[0].buffer = (char *) Image_##TYPE##_ToInternal (tmpimage, Nimage, Nalloc); \
     free (tmpimage); \
     gfits_free_header (theader); \
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c	(revision 35234)
@@ -204,10 +204,13 @@
 }
 
-Image *Image_PS1_DEV_1_ToInternal (Image_PS1_DEV_1 *in, off_t Nvalues) {
+Image *Image_PS1_DEV_1_ToInternal (Image_PS1_DEV_1 *in, off_t Nvalues, off_t Nalloc) {
 
   off_t i;
   Image *out;
 
-  ALLOCATE_ZERO (out, Image, Nvalues);
+  char *buffer;
+  ALLOCATE_ZERO (buffer, char, Nalloc);
+  out = (Image *) buffer;
+  // ALLOCATE_ZERO (out, Image, Nvalues);
 
   for (i = 0; i < Nvalues; i++) {
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c	(revision 35234)
@@ -199,10 +199,13 @@
 }
 
-Image *Image_PS1_DEV_2_ToInternal (Image_PS1_DEV_2 *in, off_t Nvalues) {
+Image *Image_PS1_DEV_2_ToInternal (Image_PS1_DEV_2 *in, off_t Nvalues, off_t Nalloc) {
 
   off_t i;
   Image *out;
 
-  ALLOCATE_ZERO (out, Image, Nvalues);
+  char *buffer;
+  ALLOCATE_ZERO (buffer, char, Nalloc);
+  out = (Image *) buffer;
+  // ALLOCATE_ZERO (out, Image, Nvalues);
 
   for (i = 0; i < Nvalues; i++) {
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_3.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_3.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_3.c	(revision 35234)
@@ -5,10 +5,13 @@
 // We only provide image and photcode conversion
 
-Image *Image_PS1_DEV_3_ToInternal (Image_PS1_DEV_3 *in, off_t Nvalues) {
+Image *Image_PS1_DEV_3_ToInternal (Image_PS1_DEV_3 *in, off_t Nvalues, off_t Nalloc) {
 
   off_t i;
   Image *out;
 
-  ALLOCATE_ZERO (out, Image, Nvalues);
+  char *buffer;
+  ALLOCATE_ZERO (buffer, char, Nalloc);
+  out = (Image *) buffer;
+  // ALLOCATE_ZERO (out, Image, Nvalues);
 
   for (i = 0; i < Nvalues; i++) {
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c	(revision 35234)
@@ -129,10 +129,13 @@
 }
 
-Image *Image_PS1_REF_ToInternal (Image_PS1_REF *in, off_t Nvalues) {
+Image *Image_PS1_REF_ToInternal (Image_PS1_REF *in, off_t Nvalues, off_t Nalloc) {
 
   off_t i;
   Image *out;
 
-  ALLOCATE_ZERO (out, Image, Nvalues);
+  char *buffer;
+  ALLOCATE_ZERO (buffer, char, Nalloc);
+  out = (Image *) buffer;
+  // ALLOCATE_ZERO (out, Image, Nvalues);
 
   for (i = 0; i < Nvalues; i++) {
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c	(revision 35234)
@@ -224,10 +224,13 @@
 }
 
-Image *Image_PS1_V1_ToInternal (Image_PS1_V1 *in, off_t Nvalues) {
+Image *Image_PS1_V1_ToInternal (Image_PS1_V1 *in, off_t Nvalues, off_t Nalloc) {
 
   off_t i;
   Image *out;
 
-  ALLOCATE_ZERO (out, Image, Nvalues);
+  char *buffer;
+  ALLOCATE_ZERO (buffer, char, Nalloc);
+  out = (Image *) buffer;
+  // ALLOCATE_ZERO (out, Image, Nvalues);
 
   for (i = 0; i < Nvalues; i++) {
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c	(revision 35234)
@@ -235,10 +235,13 @@
 }
 
-Image *Image_PS1_V2_ToInternal (Image_PS1_V2 *in, off_t Nvalues) {
+Image *Image_PS1_V2_ToInternal (Image_PS1_V2 *in, off_t Nvalues, off_t Nalloc) {
 
   off_t i;
   Image *out;
 
-  ALLOCATE_ZERO (out, Image, Nvalues);
+  char *buffer;
+  ALLOCATE_ZERO (buffer, char, Nalloc);
+  out = (Image *) buffer;
+  // ALLOCATE_ZERO (out, Image, Nvalues);
 
   for (i = 0; i < Nvalues; i++) {
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c	(revision 35234)
@@ -245,10 +245,13 @@
 }
 
-Image *Image_PS1_V3_ToInternal (Image_PS1_V3 *in, off_t Nvalues) {
+Image *Image_PS1_V3_ToInternal (Image_PS1_V3 *in, off_t Nvalues, off_t Nalloc) {
 
   off_t i;
   Image *out;
 
-  ALLOCATE_ZERO (out, Image, Nvalues);
+  char *buffer;
+  ALLOCATE_ZERO (buffer, char, Nalloc);
+  out = (Image *) buffer;
+  // ALLOCATE_ZERO (out, Image, Nvalues);
 
   for (i = 0; i < Nvalues; i++) {
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c	(revision 35234)
@@ -283,10 +283,13 @@
 }
 
-Image *Image_PS1_V4_ToInternal (Image_PS1_V4 *in, off_t Nvalues) {
+Image *Image_PS1_V4_ToInternal (Image_PS1_V4 *in, off_t Nvalues, off_t Nalloc) {
 
   off_t i;
   Image *out;
 
-  ALLOCATE_ZERO (out, Image, Nvalues);
+  char *buffer;
+  ALLOCATE_ZERO (buffer, char, Nalloc);
+  out = (Image *) buffer;
+  // ALLOCATE_ZERO (out, Image, Nvalues);
 
   for (i = 0; i < Nvalues; i++) {
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_elixir.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_elixir.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_elixir.c	(revision 35234)
@@ -190,10 +190,13 @@
 
 /* convert elixir-format images to internal images */
-Image *Image_Elixir_ToInternal (Image_Elixir *in, off_t Nvalues) {
+Image *Image_Elixir_ToInternal (Image_Elixir *in, off_t Nvalues, off_t Nalloc) {
 
   off_t i;
   Image *out;
 
-  ALLOCATE_ZERO (out, Image, Nvalues);
+  char *buffer;
+  ALLOCATE_ZERO (buffer, char, Nalloc);
+  out = (Image *) buffer;
+  // ALLOCATE_ZERO (out, Image, Nvalues);
 
   for (i = 0; i < Nvalues; i++) {
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_loneos.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_loneos.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_loneos.c	(revision 35234)
@@ -170,10 +170,13 @@
 
 /* convert loneos-format images to internal images */
-Image *Image_Loneos_ToInternal (Image_Loneos *in, off_t Nvalues) {
+Image *Image_Loneos_ToInternal (Image_Loneos *in, off_t Nvalues, off_t Nalloc) {
 
   off_t i;
   Image *out;
 
-  ALLOCATE_ZERO (out, Image, Nvalues);
+  char *buffer;
+  ALLOCATE_ZERO (buffer, char, Nalloc);
+  out = (Image *) buffer;
+  // ALLOCATE_ZERO (out, Image, Nvalues);
 
   for (i = 0; i < Nvalues; i++) {
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c	(revision 35234)
@@ -210,10 +210,13 @@
 
 /* convert panstarrs-format images to internal images */
-Image *Image_Panstarrs_DEV_0_ToInternal (Image_Panstarrs_DEV_0 *in, off_t Nvalues) {
+Image *Image_Panstarrs_DEV_0_ToInternal (Image_Panstarrs_DEV_0 *in, off_t Nvalues, off_t Nalloc) {
 
   off_t i;
   Image *out;
 
-  ALLOCATE_ZERO (out, Image, Nvalues);
+  char *buffer;
+  ALLOCATE_ZERO (buffer, char, Nalloc);
+  out = (Image *) buffer;
+  // ALLOCATE_ZERO (out, Image, Nvalues);
 
   for (i = 0; i < Nvalues; i++) {
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c	(revision 35234)
@@ -210,10 +210,13 @@
 
 /* convert panstarrs-format images to internal images */
-Image *Image_Panstarrs_DEV_1_ToInternal (Image_Panstarrs_DEV_1 *in, off_t Nvalues) {
+Image *Image_Panstarrs_DEV_1_ToInternal (Image_Panstarrs_DEV_1 *in, off_t Nvalues, off_t Nalloc) {
 
   off_t i;
   Image *out;
 
-  ALLOCATE_ZERO (out, Image, Nvalues);
+  char *buffer;
+  ALLOCATE_ZERO (buffer, char, Nalloc);
+  out = (Image *) buffer;
+  // ALLOCATE_ZERO (out, Image, Nvalues);
 
   for (i = 0; i < Nvalues; i++) {
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_image.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_image.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libdvo/src/dvo_image.c	(revision 35234)
@@ -84,4 +84,8 @@
   }
   if (!status) return (FALSE);
+
+  // XXX this is the problem... the conversion (external to internal) is 
+  // only allocated Nimage * sizeof(image) not padded to FITS blocks,
+  // so when we later do a gfits_copy_ftable, we stomp on bad memory
   FtableToImage (&db[0].ftable, &db[0].theader, &db[0].format);
   db[0].swapped = TRUE;  /* table has internal byte-order */
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libfits/include/gfitsio.h
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libfits/include/gfitsio.h	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libfits/include/gfitsio.h	(revision 35234)
@@ -123,4 +123,5 @@
 off_t   gfits_data_size                PROTO((Header *header));
 off_t   gfits_data_min_size            PROTO((Header *header));
+off_t   gfits_data_pad_size            PROTO((off_t rawsize));
 int 	gfits_extended_to_primary      PROTO((Header *header, int simple, char *comment));
 int 	gfits_primary_to_extended      PROTO((Header *header, char *exttype, char *comment));
Index: /branches/eam_branches/ipp-20130207/Ohana/src/libfits/matrix/F_matrix.c
===================================================================
--- /branches/eam_branches/ipp-20130207/Ohana/src/libfits/matrix/F_matrix.c	(revision 35233)
+++ /branches/eam_branches/ipp-20130207/Ohana/src/libfits/matrix/F_matrix.c	(revision 35234)
@@ -43,2 +43,17 @@
   return (size);
 }
+
+off_t gfits_data_pad_size (off_t rawsize) {
+  
+  off_t Nrec, size;
+
+  size = rawsize;
+
+  /* round up to next complete block */
+  if (rawsize % FT_RECORD_SIZE) {
+    Nrec = 1 + (int) (rawsize / FT_RECORD_SIZE);
+    size = FT_RECORD_SIZE * Nrec;
+  }
+
+  return (size);
+}
