Index: /trunk/Ohana/src/addstar/src/resort_catalog.c
===================================================================
--- /trunk/Ohana/src/addstar/src/resort_catalog.c	(revision 7039)
+++ /trunk/Ohana/src/addstar/src/resort_catalog.c	(revision 7039)
@@ -0,0 +1,29 @@
+# include "addstar.h"
+
+void resort_catalog (Catalog *catalog) {
+
+  int *next_meas;
+  int Naves, Nmeas;
+  double dtime;
+  struct timeval start, stop;
+
+  if (catalog[0].sorted == TRUE) return;
+
+  gettimeofday (&start, NULL);
+
+  /* internal counters */
+  Nmeas = catalog[0].Nmeasure;
+  Naves = catalog[0].Naverage;
+  
+  /* set up pointers for linked list of measure, missing */
+  next_meas = build_measure_links (catalog[0].average, Naves, catalog[0].measure, Nmeas);
+
+  catalog[0].sorted = TRUE;
+  catalog[0].measure = sort_measure (catalog[0].average, Naves, catalog[0].measure, Nmeas, next_meas);
+
+  gettimeofday (&stop, NULL);
+  dtime = DTIME (stop, start);
+  fprintf (stderr, "  match time %9.4f sec for %7d measures, %6d average\n", dtime, Nmeas, Naves);
+
+  return;
+}
Index: /trunk/Ohana/src/elixir/include/controller.h
===================================================================
--- /trunk/Ohana/src/elixir/include/controller.h	(revision 7038)
+++ /trunk/Ohana/src/elixir/include/controller.h	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 # include <signal.h>
 # include <errno.h>
Index: /trunk/Ohana/src/gophot/include/gophot.h
===================================================================
--- /trunk/Ohana/src/gophot/include/gophot.h	(revision 7038)
+++ /trunk/Ohana/src/gophot/include/gophot.h	(revision 7039)
@@ -2,5 +2,5 @@
 
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 typedef char bool;
Index: /trunk/Ohana/src/libautocode/def/common.h
===================================================================
--- /trunk/Ohana/src/libautocode/def/common.h	(revision 7038)
+++ /trunk/Ohana/src/libautocode/def/common.h	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 # ifndef AUTOCODE_H
Index: /trunk/Ohana/src/libdvo/include/dvo.h
===================================================================
--- /trunk/Ohana/src/libdvo/include/dvo.h	(revision 7038)
+++ /trunk/Ohana/src/libdvo/include/dvo.h	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 # include <autocode.h>
 
Index: /trunk/Ohana/src/libfits/Makefile
===================================================================
--- /trunk/Ohana/src/libfits/Makefile	(revision 7038)
+++ /trunk/Ohana/src/libfits/Makefile	(revision 7039)
@@ -22,5 +22,5 @@
 libfits: $(LIB)/libFITS.$(ARCH).a
 
-INCS = $(DESTINC)/fitsio.h 
+INCS = $(DESTINC)/gfitsio.h 
 
 HEADER_OBJ = \
Index: /trunk/Ohana/src/libfits/doc/sample.c
===================================================================
--- /trunk/Ohana/src/libfits/doc/sample.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/doc/sample.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 # define TRUE 1
 
Index: /trunk/Ohana/src/libfits/doc/sample2.c
===================================================================
--- /trunk/Ohana/src/libfits/doc/sample2.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/doc/sample2.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 # include <stdio.h>
 # define TRUE 1
Index: /trunk/Ohana/src/libfits/header/F_H_field.c
===================================================================
--- /trunk/Ohana/src/libfits/header/F_H_field.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/header/F_H_field.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits header field ****************************/
Index: /trunk/Ohana/src/libfits/header/F_copy_H.c
===================================================================
--- /trunk/Ohana/src/libfits/header/F_copy_H.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/header/F_copy_H.c	(revision 7039)
@@ -1,7 +1,7 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits copy header ***********************************/
-int fits_copy_header (Header *in, Header *out) {
+int gfits_copy_header (Header *in, Header *out) {
 
   int i;
@@ -24,4 +24,2 @@
   return (TRUE);
 }	
-
-
Index: /trunk/Ohana/src/libfits/header/F_create_H.c
===================================================================
--- /trunk/Ohana/src/libfits/header/F_create_H.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/header/F_create_H.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 # define NBYTES 2880
 
Index: /trunk/Ohana/src/libfits/header/F_delete.c
===================================================================
--- /trunk/Ohana/src/libfits/header/F_delete.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/header/F_delete.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits delete ****************************/
Index: /trunk/Ohana/src/libfits/header/F_free_H.c
===================================================================
--- /trunk/Ohana/src/libfits/header/F_free_H.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/header/F_free_H.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits free header ***********************************/
Index: /trunk/Ohana/src/libfits/header/F_init_H.c
===================================================================
--- /trunk/Ohana/src/libfits/header/F_init_H.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/header/F_init_H.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 int FT_UNSIGN_MODE;
 
Index: /trunk/Ohana/src/libfits/header/F_insert_array.c
===================================================================
--- /trunk/Ohana/src/libfits/header/F_insert_array.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/header/F_insert_array.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits insert array ***********************************/
Index: /trunk/Ohana/src/libfits/header/F_modify.c
===================================================================
--- /trunk/Ohana/src/libfits/header/F_modify.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/header/F_modify.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 char *fits_keyword_start (char *line);
Index: /trunk/Ohana/src/libfits/header/F_print.c
===================================================================
--- /trunk/Ohana/src/libfits/header/F_print.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/header/F_print.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 int fits_print (Header *header, char *field, char *mode, int N,...) {
Index: /trunk/Ohana/src/libfits/header/F_read_H.c
===================================================================
--- /trunk/Ohana/src/libfits/header/F_read_H.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/header/F_read_H.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 int FT_UNSIGN_MODE;
 
Index: /trunk/Ohana/src/libfits/header/F_read_XH.c
===================================================================
--- /trunk/Ohana/src/libfits/header/F_read_XH.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/header/F_read_XH.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 int FT_UNSIGN_MODE;
 
Index: /trunk/Ohana/src/libfits/header/F_scan.c
===================================================================
--- /trunk/Ohana/src/libfits/header/F_scan.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/header/F_scan.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 char *fits_keyword_start (char *line);
Index: /trunk/Ohana/src/libfits/header/F_write_H.c
===================================================================
--- /trunk/Ohana/src/libfits/header/F_write_H.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/header/F_write_H.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits write header ***********************************/
Index: /trunk/Ohana/src/libfits/header/version.c
===================================================================
--- /trunk/Ohana/src/libfits/header/version.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/header/version.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 static char *name = "$Name: not supported by cvs2svn $";
 
Index: /trunk/Ohana/src/libfits/include/gfitsio.h
===================================================================
--- /trunk/Ohana/src/libfits/include/gfitsio.h	(revision 7038)
+++ /trunk/Ohana/src/libfits/include/gfitsio.h	(revision 7039)
@@ -90,5 +90,6 @@
 /******************************* Header functions *************/
 int   fits_read_header            PROTO((char *, Header *));
-int   fits_copy_header            PROTO((Header *, Header *)); 
+// int   fits_copy_header            PROTO((Header *, Header *)); 
+int   gfits_copy_header           PROTO((Header *, Header *)); 
 void  fits_free_header            PROTO((Header *)); 
 int   fits_write_header           PROTO((char *, Header *)); 
Index: /trunk/Ohana/src/libfits/matrix/F_add_M.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_add_M.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_add_M.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits insert array ***********************************/
Index: /trunk/Ohana/src/libfits/matrix/F_add_M_value.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_add_M_value.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_add_M_value.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /***************** fits add matrix value ***********************************/
Index: /trunk/Ohana/src/libfits/matrix/F_convert_format.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_convert_format.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_convert_format.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 # define CONVERTDOWN \
Index: /trunk/Ohana/src/libfits/matrix/F_copy_M.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_copy_M.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_copy_M.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits copy header ***********************************/
Index: /trunk/Ohana/src/libfits/matrix/F_create_M.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_create_M.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_create_M.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits create matrix *******************************/
Index: /trunk/Ohana/src/libfits/matrix/F_divide_M.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_divide_M.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_divide_M.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /********************* fits divide matrix ***********************************/
Index: /trunk/Ohana/src/libfits/matrix/F_free_M.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_free_M.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_free_M.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits free matrix ***********************************/
Index: /trunk/Ohana/src/libfits/matrix/F_get_M_value.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_get_M_value.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_get_M_value.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /***************** fits get matrix value ***********************************/
Index: /trunk/Ohana/src/libfits/matrix/F_insert_M.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_insert_M.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_insert_M.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits insert array ***********************************/
Index: /trunk/Ohana/src/libfits/matrix/F_load_M.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_load_M.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_load_M.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 int fits_fread_matrix (FILE *f, Matrix *matrix, Header *header) {
Index: /trunk/Ohana/src/libfits/matrix/F_matrix.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_matrix.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_matrix.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 int fits_matrix_size (Header *header) {
Index: /trunk/Ohana/src/libfits/matrix/F_multiply_M.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_multiply_M.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_multiply_M.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /******************* fits multiply matrix ***********************************/
Index: /trunk/Ohana/src/libfits/matrix/F_read_M.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_read_M.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_read_M.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits read matrix ***********************************/
Index: /trunk/Ohana/src/libfits/matrix/F_read_portion.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_read_portion.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_read_portion.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 # ifndef SEEK_CUR 
 # define SEEK_SET 0   
Index: /trunk/Ohana/src/libfits/matrix/F_read_segment.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_read_segment.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_read_segment.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /** warning: this function requires 'dparse' which is included in libohana.a **/
Index: /trunk/Ohana/src/libfits/matrix/F_set_M_value.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_set_M_value.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_set_M_value.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /****************** fits set matrix value ***********************************/
Index: /trunk/Ohana/src/libfits/matrix/F_write_M.c
===================================================================
--- /trunk/Ohana/src/libfits/matrix/F_write_M.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/matrix/F_write_M.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits write matrix ***********************************/
Index: /trunk/Ohana/src/libfits/table/F_create_T.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_create_T.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_create_T.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits create table *******************************/
Index: /trunk/Ohana/src/libfits/table/F_create_TH.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_create_TH.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_create_TH.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /* a basic table header (extension) is different from a primary header
Index: /trunk/Ohana/src/libfits/table/F_define_column.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_define_column.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_define_column.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /***********************/
Index: /trunk/Ohana/src/libfits/table/F_free_T.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_free_T.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_free_T.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 int fits_free_table (FTable *table) {
Index: /trunk/Ohana/src/libfits/table/F_get_T_column.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_get_T_column.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_get_T_column.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits get table column *****************************/
Index: /trunk/Ohana/src/libfits/table/F_get_T_value.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_get_T_value.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_get_T_value.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits get table value ********************************/
Index: /trunk/Ohana/src/libfits/table/F_get_column.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_get_column.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_get_column.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 # define SWAP_BYTE \
   tmp = Pin[0]; Pin[0] = Pin[1]; Pin[1] = tmp;
Index: /trunk/Ohana/src/libfits/table/F_read_T.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_read_T.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_read_T.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits read table ***********************************/
Index: /trunk/Ohana/src/libfits/table/F_read_TH.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_read_TH.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_read_TH.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits read Theader ***********************************/
Index: /trunk/Ohana/src/libfits/table/F_set_column.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_set_column.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_set_column.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 # define SWAP_BYTE \
   tmp = Pout[0]; Pout[0] = Pout[1]; Pout[1] = tmp;
Index: /trunk/Ohana/src/libfits/table/F_table_column.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_table_column.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_table_column.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits table column ****************************/
Index: /trunk/Ohana/src/libfits/table/F_table_format.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_table_format.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_table_format.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /***********************/
Index: /trunk/Ohana/src/libfits/table/F_table_row.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_table_row.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_table_row.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits table column ****************************/
Index: /trunk/Ohana/src/libfits/table/F_write_T.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_write_T.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_write_T.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits write header *********************************/
Index: /trunk/Ohana/src/libfits/table/F_write_TH.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_write_TH.c	(revision 7038)
+++ /trunk/Ohana/src/libfits/table/F_write_TH.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 /*********************** fits write header *********************************/
Index: /trunk/Ohana/src/libohana/include/ohana.h
===================================================================
--- /trunk/Ohana/src/libohana/include/ohana.h	(revision 7038)
+++ /trunk/Ohana/src/libohana/include/ohana.h	(revision 7039)
@@ -23,6 +23,12 @@
 # define OHANA_H
 
+# ifndef TRUE
 # define TRUE (1)
+# endif
+
+# ifndef FALSE
 # define FALSE (0)
+# endif 
+
 # define SIGN(X)  (((X) == 0) ? 0 : ((fabs((double)(X))) / (X)))
 # define ROUND(X) ((int) ((X) + 0.5*SIGN(X)))
Index: /trunk/Ohana/src/misc/src/ckfits.c
===================================================================
--- /trunk/Ohana/src/misc/src/ckfits.c	(revision 7038)
+++ /trunk/Ohana/src/misc/src/ckfits.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 int main (int argc, char **argv) {
Index: /trunk/Ohana/src/misc/src/fhead.c
===================================================================
--- /trunk/Ohana/src/misc/src/fhead.c	(revision 7038)
+++ /trunk/Ohana/src/misc/src/fhead.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 int main (int argc, char **argv) {
Index: /trunk/Ohana/src/misc/src/fields.c
===================================================================
--- /trunk/Ohana/src/misc/src/fields.c	(revision 7038)
+++ /trunk/Ohana/src/misc/src/fields.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 int main (int argc, char **argv) {
Index: /trunk/Ohana/src/misc/src/fits_insert.c
===================================================================
--- /trunk/Ohana/src/misc/src/fits_insert.c	(revision 7038)
+++ /trunk/Ohana/src/misc/src/fits_insert.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 static char reserved[] =  "COMMENT  Reserved space.  This line can be used to add a new FITS card.         ";
Index: /trunk/Ohana/src/misc/src/fiximg.c
===================================================================
--- /trunk/Ohana/src/misc/src/fiximg.c	(revision 7038)
+++ /trunk/Ohana/src/misc/src/fiximg.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 int main (int argc, char **argv) {
Index: /trunk/Ohana/src/misc/src/ftable.c
===================================================================
--- /trunk/Ohana/src/misc/src/ftable.c	(revision 7038)
+++ /trunk/Ohana/src/misc/src/ftable.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 char *print_table_row (char *row, Header *header);
Index: /trunk/Ohana/src/misc/src/gtfringetable.c
===================================================================
--- /trunk/Ohana/src/misc/src/gtfringetable.c	(revision 7038)
+++ /trunk/Ohana/src/misc/src/gtfringetable.c	(revision 7039)
@@ -1,6 +1,6 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
-static char *version = "gtfringetable $Revision: 1.3 $";
+static char *version = "gtfringetable $Revision: 1.4 $";
 
 void get_version (int argc, char **argv, char *version);
Index: /trunk/Ohana/src/misc/src/medianfilter.c
===================================================================
--- /trunk/Ohana/src/misc/src/medianfilter.c	(revision 7038)
+++ /trunk/Ohana/src/misc/src/medianfilter.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 # define D_NFILES 100
Index: /trunk/Ohana/src/misc/src/mefhead.c
===================================================================
--- /trunk/Ohana/src/misc/src/mefhead.c	(revision 7038)
+++ /trunk/Ohana/src/misc/src/mefhead.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <ohana.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 
 int main (int argc, char **argv) {
Index: /trunk/Ohana/src/misc/src/mkfringetable.c
===================================================================
--- /trunk/Ohana/src/misc/src/mkfringetable.c	(revision 7038)
+++ /trunk/Ohana/src/misc/src/mkfringetable.c	(revision 7039)
@@ -1,6 +1,6 @@
 # include <ohana.h>
-# include <fitsio.h>
-
-static char *version = "mkfringetable $Revision: 1.6 $";
+# include <gfitsio.h>
+
+static char *version = "mkfringetable $Revision: 1.7 $";
 
 void get_version (int argc, char **argv, char *version);
Index: /trunk/Ohana/src/misc/src/posscontour.c
===================================================================
--- /trunk/Ohana/src/misc/src/posscontour.c	(revision 7038)
+++ /trunk/Ohana/src/misc/src/posscontour.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <stdio.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 # include <math.h>
 # include <malloc.h>
Index: /trunk/Ohana/src/misc/src/test.c
===================================================================
--- /trunk/Ohana/src/misc/src/test.c	(revision 7038)
+++ /trunk/Ohana/src/misc/src/test.c	(revision 7039)
@@ -1,4 +1,4 @@
 # include <stdio.h>
-# include <fitsio.h>
+# include <gfitsio.h>
 # include <math.h>
 # include <malloc.h>
Index: /trunk/Ohana/src/opihi/cmd.astro/warp.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.astro/warp.c	(revision 7039)
+++ /trunk/Ohana/src/opihi/cmd.astro/warp.c	(revision 7039)
@@ -0,0 +1,237 @@
+# include "astro.h"
+
+/*** needs mosaic astrometry ***/
+
+static double XO, XX, XY;
+static double YO, YX, YY;
+int ZERO;
+
+int map_output_to_input (int Npix, double df);
+int map_input_to_output (int Npix, double df);
+void set_linear_terms (Coords *in, Coords *out, int i, int j, int Npix);
+void apply_terms (double *Xout, double *Yout, double Xin, double Yin);
+
+Coords coords_in, coords_out;
+Buffer *in, *out, *wt;
+
+int warp (int argc, char **argv) {
+
+  int Nlinear, Np, N;
+  double scale_in, scale_out, df;
+
+  ZERO = FALSE;
+  if ((N = get_argument (argc, argv, "-zero"))) {
+    ZERO = TRUE;
+    remove_argument (N, &argc, argv);
+  }
+
+  if (argc != 5) {
+    fprintf (stderr, "USAGE: transform <from> <to> <weight> (Nlinear)\n");
+    fprintf (stderr, "  output buffer must exist with target astrometry header\n");
+    fprintf (stderr, "  Nlinear is the pixel scale for linear astrometric transformation\n");
+    return (FALSE);
+  }
+
+  if ((in  = SelectBuffer (argv[1], OLDBUFFER, TRUE)) == NULL) return (FALSE);
+  if ((out = SelectBuffer (argv[2], OLDBUFFER, TRUE)) == NULL) return (FALSE);
+  if ((wt  = SelectBuffer (argv[3], OLDBUFFER, TRUE)) == NULL) return (FALSE);
+  Nlinear = atoi (argv[4]);
+
+  GetCoords (&coords_in, &in[0].header);
+  GetCoords (&coords_out, &out[0].header);
+
+  /* for the moment, disable WRP / DIS */
+  if (!strcmp(&coords_in.ctype[4], "-WRP") || !strcmp(&coords_out.ctype[4], "-WRP")) {
+    fprintf (stderr, "WRP mode not implemented for astrom\n");
+    return (FALSE);
+  }
+  
+  scale_in = sqrt(fabs(coords_in.cdelt1*coords_in.cdelt2*(coords_in.pc1_1*coords_in.pc2_2 - coords_in.pc1_2*coords_in.pc2_1)));
+  scale_out = sqrt(fabs(coords_out.cdelt1*coords_out.cdelt2*(coords_out.pc1_1*coords_out.pc2_2 - coords_out.pc1_2*coords_out.pc2_1)));
+  
+  fprintf (stderr, "%f - %f\n", scale_in, scale_out);
+
+  if (scale_in > scale_out) {
+    Np = MAX (1, 3*scale_out / scale_in);
+    df = 1.0 / Np;
+    map_output_to_input (Nlinear, df);
+  } else {
+    Np = MAX (1, 3*scale_in / scale_out);
+    df = 1.0 / Np;
+    map_input_to_output (Nlinear, df);
+  }
+  return (TRUE);
+}
+
+/* mode 1: input pixels >> output pixels: loop over output pixels */
+/* mode 2: input pixels << output pixels: loop over input pixels */
+/* mode 3: input pixels ~= output pixels: drizzle input to output */
+
+/* loop over the input pixels, map input output image */
+int map_output_to_input (int Npix, double df) {
+
+  int i, j, Ni, No, Nx, Ny, nx, ny;
+  float *Vin, *Vout, *Vwt;
+  double x, y, X, Y;
+
+  /* loop over output pixels */
+  /* set up pointers for buffers */
+  Vin  = (float *) in[0].matrix.buffer;
+  Vout = (float *) out[0].matrix.buffer;
+  Vwt  = (float *) wt[0].matrix.buffer;
+
+  nx = in[0].header.Naxis[0];
+  ny = in[0].header.Naxis[1];
+  Nx = out[0].header.Naxis[0];
+  Ny = out[0].header.Naxis[1];
+
+  if (ZERO) {
+    bzero (Vout, Nx*Ny*sizeof(float));
+    bzero (Vwt,  Nx*Ny*sizeof(float));
+  }
+
+  for (j = 0; j < Ny; j+=Npix) {
+    for (i = 0; i < Nx; i+=Npix) {
+      
+      /* define linear transformation in region */
+      set_linear_terms (&coords_out, &coords_in, i, j, Npix);
+
+      for (X = i; (X < i + Npix) && (X < Nx); X += df) {
+	for (Y = j; (Y < j + Npix) && (Y < Ny); Y += df) {
+	  
+	  No = (int)X + ((int)Y)*Nx;
+	  apply_terms (&x, &y, X, Y);
+	  if (x < 0) continue;
+	  if (x >= nx) continue;
+	  if (y < 0) continue;
+	  if (y >= ny) continue;
+	  Ni = (int)x + ((int)y)*nx;
+
+	  Vout[No] += Vin[Ni];
+	  Vwt[No] ++;
+	}
+      }
+    }
+  }
+  return (TRUE);
+}
+
+/* loop over the input pixels, map input output image */
+int map_input_to_output (int Npix, double df) {
+
+  int i, j, Ni, No, Nx, Ny, nx, ny;
+  float *Vin, *Vout, *Vwt;
+  double x, y, X, Y;
+
+  /* loop over output pixels */
+  /* set up pointers for buffers */
+  Vin  = (float *) in[0].matrix.buffer;
+  Vout = (float *) out[0].matrix.buffer;
+  Vwt  = (float *) wt[0].matrix.buffer;
+
+  Nx = in[0].header.Naxis[0];
+  Ny = in[0].header.Naxis[1];
+  nx = out[0].header.Naxis[0];
+  ny = out[0].header.Naxis[1];
+
+  if (ZERO) {
+    bzero (Vout, nx*ny*sizeof(float));
+    bzero (Vwt,  nx*ny*sizeof(float));
+  }
+
+  for (j = 0; j < Ny; j+=Npix) {
+    for (i = 0; i < Nx; i+=Npix) {
+      
+      /* define linear transformation in region */
+      set_linear_terms (&coords_in, &coords_out, i, j, Npix);
+
+      for (X = i; (X < i + Npix) && (X < Nx); X += df) {
+	for (Y = j; (Y < j + Npix) && (Y < Ny); Y += df) {
+	  
+	  Ni = (int)X + ((int)Y)*Nx;
+	  apply_terms (&x, &y, X, Y);
+	  if (x < 0) continue;
+	  if (x >= nx) continue;
+	  if (y < 0) continue;
+	  if (y >= ny) continue;
+	  No = (int)x + ((int)y)*nx;
+
+	  Vout[No] += Vin[Ni];
+	  Vwt[No] ++;
+	}
+      }
+    }
+  }
+  return (TRUE);
+}
+
+/* find the linear astrometric fix between images at this location */
+void set_linear_terms (Coords *in, Coords *out, int i, int j, int Npix) {
+
+  int n;
+  double x, y, x2, y2, xy, X, Y, Xx, Xy, Yx, Yy;
+  double Xin, Yin, Xout, Yout;
+  double Sx2, Sy2, Sxy, SXx, SXy, SYx, SYy;
+  double N, r, d;
+
+  Xin = Yin = 0;
+  N = x = y = x2 = y2 = xy = X = Y = Xx = Xy = Yx = Yy = 0;
+
+  /* define several test points, fit a line to the input,output pairs */
+  for (n = 0; n < 3; n++) {
+
+    switch (n) {
+    case 0:
+      Xin = i;
+      Yin = j;
+      break;
+    case 1:
+      Xin = i + Npix;
+      Yin = j;
+      break;
+    case 2:
+      Xin = i;
+      Yin = j + Npix;
+      break;
+    }
+
+    XY_to_RD (&r, &d, Xin, Yin, in);
+    RD_to_XY (&Xout, &Yout, r, d, out);
+
+    x  += Xin;
+    y  += Yin;
+    x2 += Xin*Xin;
+    y2 += Yin*Yin;
+    xy += Xin*Yin;
+    X  += Xout;
+    Y  += Yout;
+    Xx += Xout*Xin;
+    Xy += Xout*Yin;
+    Yx += Yout*Xin;
+    Yy += Yout*Yin;
+    N  += 1.0;
+  }
+
+  Sx2 = x2 - x*x/N;
+  Sy2 = y2 - y*y/N;
+  Sxy = xy - x*y/N;
+  SXx = Xx - X*x/N;
+  SXy = Xy - X*y/N;
+  SYx = Yx - Y*x/N;
+  SYy = Yy - Y*y/N;
+  
+  XX = (SXx*Sy2 - SXy*Sxy) / (Sx2*Sy2 - Sxy*Sxy);
+  XY = (SXy*Sx2 - SXx*Sxy) / (Sx2*Sy2 - Sxy*Sxy);
+  XO = X/N - XX*x/N - XY*y/N;
+
+  YX = (SYx*Sy2 - SYy*Sxy) / (Sx2*Sy2 - Sxy*Sxy);
+  YY = (SYy*Sx2 - SYx*Sxy) / (Sx2*Sy2 - Sxy*Sxy);
+  YO = Y/N - YX*x/N - YY*y/N;
+
+}
+
+
+void apply_terms (double *Xout, double *Yout, double Xin, double Yin) {
+  *Xout = XO + XX*Xin + XY*Yin;
+  *Yout = YO + YX*Xin + YY*Yin;
+}
Index: /trunk/Ohana/src/opihi/include/external.h
===================================================================
--- /trunk/Ohana/src/opihi/include/external.h	(revision 7038)
+++ /trunk/Ohana/src/opihi/include/external.h	(revision 7039)
@@ -12,5 +12,4 @@
 
 # include <ohana.h>
-# include <fitsio.h>
 # include <dvo.h>
 
