Index: /trunk/psModules/src/astrom/pmConceptsRead.c
===================================================================
--- /trunk/psModules/src/astrom/pmConceptsRead.c	(revision 6982)
+++ /trunk/psModules/src/astrom/pmConceptsRead.c	(revision 6983)
@@ -61,30 +61,27 @@
         }
 
-        // Reformat so that everything's clean
-        if (strcmp(spec->blank->name, parsed->name) != 0 ||
-                strcmp(spec->blank->comment, parsed->comment) != 0) {
-            psMetadataItem *cleaned = NULL;     // Item that's been cleaned up --- correct name and comment
-            switch (spec->blank->type) {
-            case PS_DATA_STRING:
-                cleaned = psMetadataItemAllocStr(spec->blank->name, spec->blank->comment, parsed->data.V);
-                break;
-            case PS_DATA_S32:
-                cleaned = psMetadataItemAllocS32(spec->blank->name, spec->blank->comment, parsed->data.S32);
-                break;
-            case PS_DATA_F32:
-                cleaned = psMetadataItemAllocF32(spec->blank->name, spec->blank->comment, parsed->data.F32);
-                break;
-            case PS_DATA_F64:
-                cleaned = psMetadataItemAllocF64(spec->blank->name, spec->blank->comment, parsed->data.F64);
-                break;
-            default:
-                cleaned = psMetadataItemAlloc(spec->blank->name, concept->type, spec->blank->comment,
-                                              parsed->data.V);
-            }
-            psFree(parsed);
-            parsed = cleaned;
-        }
-        psMetadataAddItem(target, parsed, PS_LIST_TAIL, PS_META_REPLACE);
-        psFree(parsed);     // Drop reference
+        // Plug the parsed concept into a new psMetadataItem, so each "concept" has its own version that can
+        // be altered without affecting the others.  Also, so that we maintain the template name and comment.
+        psMetadataItem *cleaned = NULL;     // Item that's been cleaned up --- correct name and comment
+        switch (spec->blank->type) {
+        case PS_DATA_STRING:
+            cleaned = psMetadataItemAllocStr(spec->blank->name, spec->blank->comment, parsed->data.V);
+            break;
+        case PS_DATA_S32:
+            cleaned = psMetadataItemAllocS32(spec->blank->name, spec->blank->comment, parsed->data.S32);
+            break;
+        case PS_DATA_F32:
+            cleaned = psMetadataItemAllocF32(spec->blank->name, spec->blank->comment, parsed->data.F32);
+            break;
+        case PS_DATA_F64:
+            cleaned = psMetadataItemAllocF64(spec->blank->name, spec->blank->comment, parsed->data.F64);
+            break;
+        default:
+            cleaned = psMetadataItemAlloc(spec->blank->name, parsed->type, spec->blank->comment,
+                                          parsed->data.V);
+        }
+        psFree(parsed);
+        psMetadataAddItem(target, cleaned, PS_LIST_TAIL, PS_META_REPLACE);
+        psFree(cleaned);                 // Drop reference
         return true;
     }
