Index: trunk/psModules/src/detrend/pmDark.c
===================================================================
--- trunk/psModules/src/detrend/pmDark.c	(revision 19082)
+++ trunk/psModules/src/detrend/pmDark.c	(revision 19083)
@@ -99,5 +99,5 @@
 }
 
-// this creates and saves: values, roMask, norm, poly, counts, sigma, and saves the on output->analysis
+// this creates and saves: values, roMask, norm, orders, counts, sigma, and saves the on output->analysis
 bool pmDarkCombinePrepare(pmCell *output, const psArray *inputs, psArray *ordinates, const char *normConcept)
 {
@@ -183,8 +183,10 @@
         }
     }
-    psPolynomialMD *poly = psPolynomialMDAlloc(orders); // Polynomial for fitting
-    psFree(orders);
-
-    int numTerms = poly->coeff->n;      // Number of terms in polynomial
+
+    int numTerms = 1;                   // Number of terms in polynomial
+    for (int i = 0; i < orders->n; i++) {
+        numTerms += orders->data.U8[i];
+    }
+
     if (numTerms > inputs->n - numBadInputs) {
         psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Insufficient inputs (%ld) to fit polynomial terms (%d).",
@@ -232,8 +234,8 @@
     psMetadataAddStr(output->analysis, PS_LIST_TAIL, PM_DARK_ANALYSIS_NORM, PS_META_REPLACE, "Dark normalisation", normConcept);
 
-    psMetadataAddPtr(output->analysis, PS_LIST_TAIL, "DARK.VALUES",  PS_DATA_ARRAY | PS_META_REPLACE, "Dark values", values);
+    psMetadataAddPtr(output->analysis, PS_LIST_TAIL, "DARK.VALUES",  PS_DATA_ARRAY  | PS_META_REPLACE, "Dark values", values);
     psMetadataAddPtr(output->analysis, PS_LIST_TAIL, "DARK.RO.MASK", PS_DATA_VECTOR | PS_META_REPLACE, "Dark Readout Mask", roMask);
     psMetadataAddPtr(output->analysis, PS_LIST_TAIL, "DARK.NORM",    PS_DATA_VECTOR | PS_META_REPLACE, "Dark norm", norm);
-    psMetadataAddPtr(output->analysis, PS_LIST_TAIL, "DARK.POLY",   PS_DATA_UNKNOWN | PS_META_REPLACE, "Dark poly", poly);
+    psMetadataAddPtr(output->analysis, PS_LIST_TAIL, "DARK.ORDERS",  PS_DATA_VECTOR | PS_META_REPLACE, "Dark orders", orders);
 
     for (int i = 0; i < numTerms; i++) {
@@ -246,5 +248,5 @@
     psFree(norm);
     psFree(roMask);
-    psFree(poly);
+    psFree(orders);
     psFree(values);
 
@@ -270,7 +272,9 @@
 
     // retrieve the required parameter vectors
-    psArray *values      = psMetadataLookupPtr(&mdok, output->analysis, "DARK.VALUES");  psAssert (values, "values not supplied");
-    psVector *roMask     = psMetadataLookupPtr(&mdok, output->analysis, "DARK.RO.MASK"); psAssert (roMask, "roMask not supplied");
-    psPolynomialMD *poly = psMetadataLookupPtr(&mdok, output->analysis, "DARK.POLY");    psAssert (poly, "orders not supplied");
+    psArray *values  = psMetadataLookupPtr(&mdok, output->analysis, "DARK.VALUES");  psAssert (values, "values not supplied");
+    psVector *roMask = psMetadataLookupPtr(&mdok, output->analysis, "DARK.RO.MASK"); psAssert (roMask, "roMask not supplied");
+    psVector *orders = psMetadataLookupPtr(&mdok, output->analysis, "DARK.ORDERS");  psAssert (orders, "orders not supplied");
+
+    psPolynomialMD *poly = psPolynomialMDAlloc(orders); // Polynomial for fitting
 
     // retrieve the norm vector, if supplied
