Index: trunk/ippToPsps/src/ippToPspsConfig.c
===================================================================
--- trunk/ippToPsps/src/ippToPspsConfig.c	(revision 28249)
+++ trunk/ippToPsps/src/ippToPspsConfig.c	(revision 28556)
@@ -616,11 +616,7 @@
                 column->ippType = ippToPsps_GetDataType(buffer); 
 
-                // IPP column
-                ippToPspsConfig_getAttribute(node, "ippColumn", buffer);
-                column->ippColNum = atoi(buffer);
-
                 column->usingDefault = false;
 
-                //psLogMsg("ippToPsps", PS_LOG_INFO, "...mapping PSPS:'%s' to '%s'", column->pspsName, column->ippName );
+                //psLogMsg("ippToPsps", PS_LOG_INFO, "...mapping PSPS:'%s' to '%s' '%d'", column->pspsName, column->ippName, column->ippColNum );
             }
         }
@@ -734,5 +730,16 @@
     int readStatus = 0;
     int writeStatus = 0;
-
+   
+    // first loop round all columns and get IPP col numbers for provided column names
+    if(!fromHeader) {
+
+        for (uint32_t i=0; i<table->numOfColumns; i++) {
+
+            if (strlen(table->columns[i].ippName) < 1) continue;
+            readStatus = 0;
+            fits_get_colnum(fitsIn, CASESEN, table->columns[i].ippName, &table->columns[i].ippColNum, &readStatus);
+            if (readStatus) psError(PS_ERR_IO, false, "%d Unable to read col num for '%s' '%s' %d", i, table->columns[i].pspsName, table->columns[i].ippName, table->columns[i].ippColNum);
+        }
+    }
 
     int col;
