Index: /trunk/psModules/src/concepts/pmConceptsRead.c
===================================================================
--- /trunk/psModules/src/concepts/pmConceptsRead.c	(revision 7409)
+++ /trunk/psModules/src/concepts/pmConceptsRead.c	(revision 7410)
@@ -62,4 +62,5 @@
 
     if (!concept) {
+        psError(PS_ERR_UNKNOWN, true, "Concept is NULL");
         return false;
     }
@@ -115,4 +116,5 @@
     PS_ASSERT_PTR_NON_NULL(target, false);
     if (!cell) {
+        psError(PS_ERR_UNKNOWN, true, "cell is NULL");
         return false;
     }
@@ -120,4 +122,5 @@
     pmHDU *hdu = pmHDUGetLowest(NULL, NULL, cell); // The HDU at the lowest level
     if (!hdu) {
+        psError(PS_ERR_UNKNOWN, true, "Can't find HDU for cell");
         return false;
     }
@@ -178,4 +181,5 @@
     pmHDU *hdu = pmHDUGetLowest(fpa, chip, cell); // The HDU at the lowest level
     if (!hdu) {
+        psError(PS_ERR_UNKNOWN, true, "Can't find HDU for cell");
         return false;
     }
@@ -184,4 +188,5 @@
     psMetadata *defaults = psMetadataLookupMD(&mdok, cameraFormat, "DEFAULTS"); // The DEFAULTS spec
     if (!mdok || !defaults) {
+        psError(PS_ERR_IO, true, "Failed to find \"DEFAULTS\"");
         return false;
     }
@@ -189,4 +194,5 @@
     psMetadataItem *specItem = NULL;    // Item from the specs metadata
     bool status = true;                 // Status of reading concepts
+    psErrorClear();   // we're going to declare all errors "old" => won't clear stack
     while ((specItem = psMetadataGetAndIncrement(specsIter))) {
         pmConceptSpec *spec = specItem->data.V; // The specification
@@ -215,4 +221,5 @@
     pmHDU *hdu = pmHDUGetLowest(fpa, chip, cell); // The HDU at the lowest level
     if (!hdu) {
+        psError(PS_ERR_UNKNOWN, true, "Can't find HDU at lowest level");
         return false;
     }
@@ -221,4 +228,5 @@
     psMetadata *transSpec = psMetadataLookupMD(&mdok, cameraFormat, "TRANSLATION"); // The TRANSLATION spec
     if (!mdok || !transSpec) {
+        psError(PS_ERR_IO, true, "Failed to find \"TRANSLATION\"");
         return false;
     }
@@ -253,5 +261,5 @@
                 if (keys->n == 1) {
                     // Only one key --- proceed as usual
-                    headerItem = psMetadataLookup(hdu->header, keywords);
+                    headerItem = psMemIncrRefCounter(psMetadataLookup(hdu->header, keywords));
                 } else {
                     psListIterator *keysIter = psListIteratorAlloc(keys, PS_LIST_HEAD, false); // Iterator
@@ -275,4 +283,5 @@
             status = false;
         }
+        psFree(headerItem);
     }
     psFree(specsIter);
