Index: /trunk/ppSim/src/ppSimArguments.c
===================================================================
--- /trunk/ppSim/src/ppSimArguments.c	(revision 24806)
+++ /trunk/ppSim/src/ppSimArguments.c	(revision 24807)
@@ -36,4 +36,5 @@
     psMetadataAddF32(arguments,  PS_LIST_TAIL, "-biaslevel", 0, "Bias level (e)", NAN);
     psMetadataAddF32(arguments,  PS_LIST_TAIL, "-biasrange", 0, "Bias range (e)", NAN);
+    psMetadataAddF32(arguments,  PS_LIST_TAIL, "-dettemp", 0, "Detector Temperature (C)", NAN);
     psMetadataAddF32(arguments,  PS_LIST_TAIL, "-darkrate", 0, "Dark rate (e/s)", NAN);
     psMetadataAddF32(arguments,  PS_LIST_TAIL, "-flatsigma", 0, "Flat sigma", NAN);
@@ -189,4 +190,5 @@
     ppSimArgToRecipeF32(&status,  options, "BIAS.RANGE",    arguments, "-biasrange");
     ppSimArgToRecipeF32(&status,  options, "DARK.RATE",     arguments, "-darkrate");
+    ppSimArgToRecipeF32(&status,  options, "DET.TEMP",      arguments, "-dettemp");
     ppSimArgToRecipeF32(&status,  options, "FLAT.SIGMA",    arguments, "-flatsigma");
     ppSimArgToRecipeF32(&status,  options, "FLAT.RATE",     arguments, "-flatrate");
Index: /trunk/ppSim/src/ppSimMakeDark.c
===================================================================
--- /trunk/ppSim/src/ppSimMakeDark.c	(revision 24806)
+++ /trunk/ppSim/src/ppSimMakeDark.c	(revision 24807)
@@ -20,4 +20,11 @@
     }
 
+    float detTemp   = psMetadataLookupF32(&mdok, recipe, "DET.TEMP"); // Detector Temperature
+    float darkTemp  = psMetadataLookupF32(&mdok, recipe, "DARK.TEMP"); // Dark temperature trend
+    float darkTemp2 = psMetadataLookupF32(&mdok, recipe, "DARK.TEMP2"); // Dark temperature trend 2nd order term
+    if (!isfinite(detTemp)) detTemp = 0.0;
+    if (!isfinite(darkTemp)) darkTemp = 0.0;
+    if (!isfinite(darkTemp2)) darkTemp2 = 0.0;
+
     float expTime  = psMetadataLookupF32(&mdok, recipe, "EXPTIME"); // Exposure time
     if (isnan(expTime)) {
@@ -26,11 +33,11 @@
     }
 
-    psTrace("ppSim", 6, "darkRate: %f, expTime: %f\n", darkRate, expTime);
+    // Dark current
+    float darkCurrent = (darkRate + darkTemp*detTemp + darkTemp2*PS_SQR(detTemp)) * expTime; // Dark current accumulated
+    
+    psTrace("ppSim", 6, "dark current: %f, darkRate: %f, darkTempTrend: %f, darkTempSecondOrder: %f, detTemp: %f, expTime: %f\n", darkCurrent, darkRate, darkTemp, darkTemp2, detTemp, expTime);
 
     for (int y = 0; y < signal->numRows; y++) {
         for (int x = 0; x < signal->numCols; x++) {
-
-            // Dark current
-            float darkCurrent = darkRate * expTime; // Dark current accumulated
             signal->data.F32[y][x] += darkCurrent;
             variance->data.F32[y][x] += darkCurrent;
Index: /trunk/ppSim/src/ppSimUtils.c
===================================================================
--- /trunk/ppSim/src/ppSimUtils.c	(revision 24806)
+++ /trunk/ppSim/src/ppSimUtils.c	(revision 24807)
@@ -127,4 +127,5 @@
 
     float expTime = psMetadataLookupF32(NULL, recipe, "EXPTIME"); // Exposure time
+    float detTemp = psMetadataLookupF32(NULL, recipe, "DET.TEMP"); // Detector Temperature
 
     const char *filter = psMetadataLookupStr(NULL, recipe, "FILTER"); // Filter name
@@ -136,11 +137,12 @@
     char *obs_mode = psMetadataLookupStr(NULL, recipe, "OBS_MODE");
 
-    psMetadataAddStr(fpa->concepts, PS_LIST_TAIL, "FPA.OBSTYPE", PS_META_REPLACE, "Observation type", typeStr);
-    psMetadataAddStr(fpa->concepts, PS_LIST_TAIL, "FPA.OBJECT", PS_META_REPLACE, "Observation name", typeStr);
+    psMetadataAddStr(fpa->concepts, PS_LIST_TAIL, "FPA.OBSTYPE",  PS_META_REPLACE, "Observation type", typeStr);
+    psMetadataAddStr(fpa->concepts, PS_LIST_TAIL, "FPA.OBJECT",   PS_META_REPLACE, "Observation name", typeStr);
     psMetadataAddStr(fpa->concepts, PS_LIST_TAIL, "FPA.OBS.MODE", PS_META_REPLACE, "Observation mode", obs_mode);
     psMetadataAddF32(fpa->concepts, PS_LIST_TAIL, "FPA.EXPOSURE", PS_META_REPLACE, "Exposure time (sec)", expTime);
+    psMetadataAddF32(fpa->concepts, PS_LIST_TAIL, "FPA.TEMP",     PS_META_REPLACE, "Detector Temperature (C)", detTemp);
     psMetadataAddStr(fpa->concepts, PS_LIST_TAIL, "FPA.FILTERID", PS_META_REPLACE, "Filter name", filter);
-    psMetadataAddStr(fpa->concepts, PS_LIST_TAIL, "FPA.FILTER", PS_META_REPLACE, "Filter name", filter);
-    psMetadataAddF32(fpa->concepts, PS_LIST_TAIL, "FPA.AIRMASS", PS_META_REPLACE, "airmass (dummy value)", 1.0);
+    psMetadataAddStr(fpa->concepts, PS_LIST_TAIL, "FPA.FILTER",   PS_META_REPLACE, "Filter name", filter);
+    psMetadataAddF32(fpa->concepts, PS_LIST_TAIL, "FPA.AIRMASS",  PS_META_REPLACE, "airmass (dummy value)", 1.0);
 
     return true;
