Index: trunk/Ohana/src/libfits/include/gfitsio.h
===================================================================
--- trunk/Ohana/src/libfits/include/gfitsio.h	(revision 29537)
+++ trunk/Ohana/src/libfits/include/gfitsio.h	(revision 29938)
@@ -64,4 +64,5 @@
   char                   *buffer;
   off_t                   datasize;
+  off_t                   validsize;
 } FTable;
 
@@ -172,5 +173,5 @@
 int     gfits_define_table_column      PROTO((Header *header, char *format, char *label, char *comment, char *unit));
 int   	gfits_fread_ftable             PROTO((FILE *f, FTable *ftable, char *extname)); 
-int   	gfits_fread_ftable_data        PROTO((FILE *f, FTable *ftable));
+int   	gfits_fread_ftable_data        PROTO((FILE *f, FTable *ftable, int padIfShort));
 int   	gfits_fread_ftable_range       PROTO((FILE *f, FTable *ftable, off_t start, off_t Nrows));
 int   	gfits_fread_vtable             PROTO((FILE *f, VTable *vtable, char *extname, off_t Nrow, off_t *row));
Index: trunk/Ohana/src/libfits/table/F_read_T.c
===================================================================
--- trunk/Ohana/src/libfits/table/F_read_T.c	(revision 29537)
+++ trunk/Ohana/src/libfits/table/F_read_T.c	(revision 29938)
@@ -36,5 +36,5 @@
     gfits_scan (header, "EXTNAME", "%s", 1, tname);
     if (!strcmp (tname, extname)) {
-      if (gfits_fread_ftable_data (f, table)) return (TRUE);
+      if (gfits_fread_ftable_data (f, table, FALSE)) return (TRUE);
       gfits_free_header (header);
       return (FALSE);
@@ -50,5 +50,5 @@
 
 /*********************** fits read ftable data ***********************************/
-int gfits_fread_ftable_data (FILE *f, FTable *table) {
+int gfits_fread_ftable_data (FILE *f, FTable *table, int padIfShort) {
 
   off_t Nbytes, Nread;
@@ -65,9 +65,18 @@
     if (Nread < gfits_data_min_size (table[0].header)) {
       fprintf (stderr, "error: fits read error in %s, read "OFF_T_FMT", need "OFF_T_FMT"\n", __func__,  Nread,  gfits_data_min_size (table[0].header));
-      gfits_free_table  (table);
-      return (FALSE);
+      if (padIfShort) {
+	memset (&table[0].buffer[Nread], 0, Nbytes - Nread);
+	fprintf (stderr, "warning: file missing data, padding with zeros: USE AT YOUR OWN RISK!\n");
+	table[0].validsize = Nread;
+	table[0].datasize = Nbytes;
+	return (TRUE);
+      } else {
+	gfits_free_table  (table);
+	return (FALSE);
+      }
     }
     fprintf (stderr, "warning: file missing pad\n");
   }
+  table[0].validsize = Nread;
   table[0].datasize = Nbytes;
   return (TRUE);
