Index: /trunk/psastro/src/psastroLoadRefstars.c
===================================================================
--- /trunk/psastro/src/psastroLoadRefstars.c	(revision 18044)
+++ /trunk/psastro/src/psastroLoadRefstars.c	(revision 18045)
@@ -28,7 +28,18 @@
     DECmax += dDEC * fieldPadding;
 
-    // XXX CATDIR needs to look up abstracted name from psastro.config
-    // XXX which is then selected from the top-level ipprc.config
-    char *catdir = psMetadataLookupStr(NULL, recipe, "DVO.CATDIR");
+    // grab the PSASTRO.CATDIR name from the PSASTRO recipe
+    char *catdir_recipe = psMetadataLookupStr(&status, recipe, "PSASTRO.CATDIR");
+    psAssert (catdir_recipe, NULL);
+
+    // substitute abstract name with concrete name, if present in PSASTRO.CATDIRS
+    psMetadata *catdirs = psMetadataLookupMetadata(&status, config->complete, "PSASTRO.CATDIRS"); // List of cameras
+    if (!catdirs) {
+        psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to find PSASTRO.CATDIRS in the system configuration.\n");
+        return false;
+    }
+    char *catdir_virtual = psMetadataLookupStr(&status, catdirs, catdir_recipe);
+    char *catdir = (catdir_virtual == NULL) ? catdir_recipe : catdir_virtual;
+
+    // convert the uri to a real filename (ie, path://foobar) 
     psString CATDIR = pmConfigConvertFilename(catdir, config, false); // Resolved filename
     PS_ASSERT (CATDIR, NULL);
