Index: /branches/eam_branches/ipp-20140904/Ohana/src/libfits/Makefile
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/libfits/Makefile	(revision 37655)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/libfits/Makefile	(revision 37656)
@@ -32,6 +32,7 @@
 $(HEAD)/F_scan.$(ARCH).o			$(HEAD)/F_print.$(ARCH).o     \
 $(HEAD)/F_copy_H.$(ARCH).o			$(HEAD)/F_delete.$(ARCH).o    \
-$(HEAD)/F_read_XH.$(ARCH).o			$(HEAD)/F_init_H.$(ARCH).o    \
-$(HEAD)/F_convert_H.$(ARCH).o                   $(HEAD)/version.$(ARCH).o
+$(HEAD)/F_find_XH.$(ARCH).o			$(HEAD)/F_init_H.$(ARCH).o    \
+$(HEAD)/F_convert_H.$(ARCH).o                   $(HEAD)/F_read_XH.$(ARCH).o   \
+$(HEAD)/version.$(ARCH).o
 
 MATRIX_OBJ = \
Index: /branches/eam_branches/ipp-20140904/Ohana/src/libfits/header/F_find_H.c
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/libfits/header/F_find_H.c	(revision 37656)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/libfits/header/F_find_H.c	(revision 37656)
@@ -0,0 +1,42 @@
+# include <ohana.h>
+# include <gfitsio.h>
+
+/*********************** fits find (and read) named header, leave file pointer and end of header *******/
+int gfits_find_Xheader (FILE *f, Header *header, char *extname) {
+
+  int j, found;
+  off_t Nbytes;
+  Header *header;
+  char tname[80];
+
+  // start at the very beginning (no other info)
+  fseeko (f, 0, SEEK_SET);
+
+  // read the PHU header
+  if (!gfits_load_header (f, header)) return FALSE;
+
+  // skip to next header 
+  off_t Nbytes = gfits_data_size (header);
+  fseeko (f, Nbytes, SEEK_CUR);
+  gfits_free_header (header);
+
+  while (TRUE) {
+    // load data for this header 
+    if (!gfits_load_header (f, header)) return FALSE;
+
+    // grab the EXTNAME field
+    bzero (tname, 80);
+    if (!gfits_scan (header, "EXTNAME", "%s", 1, tname)) goto next_header;
+
+    // check if this is the correct extension or not 
+    if (strcmp (tname, extname)) goto next_header;
+    return TRUE;
+
+  next_header:
+    /* skip to next header */
+    Nbytes = gfits_data_size (header);
+    fseeko (f, Nbytes, SEEK_CUR);
+    gfits_free_header (header);
+  }
+  myAbort("impossible");
+}	
Index: /branches/eam_branches/ipp-20140904/Ohana/src/libfits/include/gfitsio.h
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/libfits/include/gfitsio.h	(revision 37655)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/libfits/include/gfitsio.h	(revision 37656)
@@ -119,4 +119,5 @@
 int     gfits_modify_alt               PROTO((Header *header, char *field, char *mode, int N,...)); 
 int     gfits_print_alt                PROTO((Header *header, char *field, char *mode, int N,...)); 
+int     gfits_find_Xheader             PROTO((char *filename, Header *header, char *extname));
 int     gfits_read_Xheader             PROTO((char *filename, Header *header, int N));
 int     gfits_read_header              PROTO((char *filename, Header *header));
Index: /branches/eam_branches/ipp-20140904/Ohana/src/libfits/table/F_read_T.c
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/libfits/table/F_read_T.c	(revision 37655)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/libfits/table/F_read_T.c	(revision 37656)
@@ -25,27 +25,10 @@
 
   header = table[0].header;
-  fseeko (f, 0, SEEK_SET);
-
-  found = FALSE;
-  for (j = -1; !found; j++) {
-    /* load data for this header */
-    if (!gfits_load_header (f, header)) return (FALSE);
-
-    /* check if this is the correct extension or not */
-    bzero (tname, 80);
-    gfits_scan (header, "EXTNAME", "%s", 1, tname);
-    if (!strcmp (tname, extname)) {
-      if (gfits_fread_ftable_data (f, table, FALSE)) return (TRUE);
-      gfits_free_header (header);
-      return (FALSE);
-    }
-
-    /* skip to next header */
-    Nbytes = gfits_data_size (header);
-    fseeko (f, Nbytes, SEEK_CUR);
-    gfits_free_header (header);
-  }
-  return (TRUE);
-}	
+  if (!gfits_find_Xheader (f, header, extname)) return FALSE;
+
+  if (gfits_fread_ftable_data (f, table, FALSE)) return (TRUE);
+  gfits_free_header (header);
+  return (FALSE);
+}
 
 /*********************** fits read ftable data ***********************************/
