Index: trunk/Ohana/src/libautocode/def/autocode.c
===================================================================
--- trunk/Ohana/src/libautocode/def/autocode.c	(revision 29537)
+++ trunk/Ohana/src/libautocode/def/autocode.c	(revision 38441)
@@ -27,5 +27,6 @@
 /*** add test of EXTNAME and header-defined columns? ***/
 /* return internal structure representation */
-$STRUCT *gfits_table_get_$STRUCT (FTable *ftable, off_t *Ndata, char *swapped) {
+/* scaledData & nativeBytes describe the current state of the ftable.buffer */
+$STRUCT *gfits_table_get_$STRUCT (FTable *ftable, off_t *Ndata, char *scaledValue, char *nativeOrder) {
 
   int Ncols;
@@ -40,15 +41,21 @@
   *Ndata = ftable[0].header[0].Naxis[1];
   data = ($STRUCT *) ftable[0].buffer;
-  if ((swapped == NULL) || (*swapped == FALSE)) {
+
+  // if the pointer is not passed, we need to swap
+  if (!nativeOrder || !*nativeOrder) {
     if (!gfits_convert_$STRUCT (data, sizeof ($STRUCT), *Ndata)) {
       return NULL;
     }
+    if (nativeOrder) *nativeOrder = TRUE;
+  }
+  // if the pointer is not passed, we need to scale
+  if (!scaledValue || !*scaledValue) {
     gfits_table_scale_data (ftable);
-    if (swapped != NULL) *swapped = TRUE;
+    if (scaledValue) *scaledValue = TRUE;
   }
   return (data);
 }
 
-int gfits_table_set_$STRUCT (FTable *ftable, $STRUCT *data, off_t Ndata) {
+int gfits_table_set_$STRUCT (FTable *ftable, $STRUCT *data, off_t Ndata, int swapFromNative) {
 
   Header *header;
@@ -67,5 +74,7 @@
   /* add data values */
   if (!gfits_table_scale_data (ftable)) return (FALSE);
-  if (!gfits_convert_$STRUCT (data, sizeof ($STRUCT), Ndata)) return (FALSE);
+  if (swapFromNative) {
+    if (!gfits_convert_$STRUCT (data, sizeof ($STRUCT), Ndata)) return (FALSE);
+  }
   if (!gfits_add_rows (ftable, (char *) data, Ndata, sizeof ($STRUCT))) return (FALSE);
 
