Index: /trunk/psModules/src/concepts/pmConceptsStandard.c
===================================================================
--- /trunk/psModules/src/concepts/pmConceptsStandard.c	(revision 22682)
+++ /trunk/psModules/src/concepts/pmConceptsStandard.c	(revision 22683)
@@ -639,4 +639,36 @@
 }
 
+// Determine the corresponding TIMESYS for one of the TIME concepts
+static psTimeType conceptGetTimesysForTime(const char *name, // Concept name ("CELL.TIME" or "FPA.TIME")
+                                           const pmFPA *fpa, // FPA of interest
+                                           const pmChip *chip, // Chip of interest, or NULL
+                                           const pmCell *cell // Cell of interest, or NULL
+                                           )
+{
+    assert(name);
+
+    psString timesysName = psStringCopy(name); // e.g., "CELL.TIME" --> "CELL.TIMESYS"
+    psStringSubstitute(&timesysName, "TIMESYS", "TIME");
+    bool mdok = false;                  // Result of MD lookup
+    psTimeType timeSys = 0xFFFFFFFF;    // The time system
+    if (cell) {
+        timeSys = psMetadataLookupS32(&mdok, cell->concepts, timesysName);
+    }
+    if (!mdok && chip) {
+        timeSys = psMetadataLookupS32(&mdok, chip->concepts, timesysName);
+    }
+    if (!mdok && fpa) {
+        timeSys = psMetadataLookupS32(&mdok, fpa->concepts, timesysName);
+    }
+    if (!mdok || (timeSys == 0xFFFFFFFF)) {
+        psWarning("Unable to find %s in concepts when parsing %s --- assuming UTC.\n",
+                  timesysName, name);
+        timeSys = PS_TIME_UTC;
+    }
+    psFree(timesysName);
+
+    return timeSys;
+}
+
 psMetadataItem *p_pmConceptParse_TIME(const psMetadataItem *concept,
                                       const psMetadataItem *pattern,
@@ -650,24 +682,5 @@
     assert(cameraFormat);
 
-    // Need TIMESYS first
-    psString timesysName = psStringCopy(pattern->name); // e.g., "CELL.TIME" --> "CELL.TIMESYS"
-    psStringSubstitute(&timesysName, "TIMESYS", "TIME");
-    bool mdok = false;                  // Result of MD lookup
-    psTimeType timeSys = PS_TIME_UTC; // The time system
-    if (cell) {
-        timeSys = psMetadataLookupS32(&mdok, cell->concepts, timesysName);
-    }
-    if (!mdok && chip) {
-        timeSys = psMetadataLookupS32(&mdok, chip->concepts, timesysName);
-    }
-    if (!mdok && fpa) {
-        timeSys = psMetadataLookupS32(&mdok, fpa->concepts, timesysName);
-    }
-    if (!mdok || (timeSys == 0xffffffff)) {
-        psWarning("Unable to find %s in concepts when parsing %s --- assuming UTC.\n",
-                  timesysName, pattern->name);
-        timeSys = PS_TIME_UTC;
-    }
-    psFree(timesysName);
+    psTimeType timeSys = conceptGetTimesysForTime(pattern->name, fpa, chip, cell); // Time system
 
     // Work out how the time is represented
@@ -681,4 +694,5 @@
 
     // Get format
+    bool mdok;                          // Status of MD lookup
     psMetadata *formats = psMetadataLookupMetadata(&mdok, cameraFormat, "FORMATS");
     if (!mdok || !formats) {
@@ -1134,4 +1148,7 @@
 {
     psTime *time = concept->data.V;     // The time
+
+    psTimeType timeSys = conceptGetTimesysForTime(concept->name, fpa, chip, cell); // Time system
+    psTimeConvert(time, timeSys);
 
     // Work out the format
