diff --git a/libasn1fix/asn1fix_retrieve.c b/libasn1fix/asn1fix_retrieve.c
index cbf6bae..f9e593b 100644
--- a/libasn1fix/asn1fix_retrieve.c
+++ b/libasn1fix/asn1fix_retrieve.c
@@ -48,6 +48,13 @@
 	 */
 	mod = asn1f_lookup_module(arg, xp->from, xp->from_oid);
 	if(mod == NULL) {
+		/* Conditional debug */
+		if(!(arg->expr->_mark & TM_BROKEN)) {
+			arg->expr->_mark |= TM_BROKEN;
+			FATAL("Cannot find module %s "
+				"mentioned for %s at line %d",
+				xp->from, name, arg->expr->_lineno);
+		}
 		/* ENOENT/ETOOMANYREFS */
 		return NULL;
 	}
@@ -220,6 +227,7 @@
 	 */
 	if(imports_from) {
 		asn1p_ref_t tmpref = *ref;
+		asn1p_expr_t *expr;
 		if(modulename) {
 			/*
 			 * The modulename is specified inside this reference.
@@ -230,7 +238,26 @@
 			tmpref.comp_count--;
 			assert(tmpref.comp_count > 0);
 		}
-		return asn1f_lookup_symbol(arg, imports_from, &tmpref);
+
+		expr = asn1f_lookup_symbol(arg, imports_from, &tmpref);
+		if(!expr && !(arg->expr->_mark & TM_BROKEN)) {
+			arg->expr->_mark |= TM_BROKEN;
+			if(modulename) {
+				FATAL("Module %s referred by %s in module %s "
+					"does not contain the requested symbol",
+				imports_from->Identifier,
+				asn1f_printable_reference(ref),
+				mod->Identifier);
+			} else {
+				FATAL("Module %s referred in IMPORTS section "
+				"for %s of module %s does not contain "
+				"the requested symbol",
+				imports_from->Identifier,
+				asn1f_printable_reference(ref),
+				mod->Identifier);
+			}
+		}
+		return expr;
 	}
 
 	/*
@@ -316,7 +343,7 @@
 	}
 
 	/*
-	 * Lookup inside the default module.
+	 * Lookup inside the default module and its IMPORTS section.
 	 */
 	tc = asn1f_lookup_symbol(arg, expr->module, ref);
 	if(tc == NULL) {
@@ -367,8 +394,14 @@
 			return 0;
 	}
 
-	DEBUG("Symbol \"%s\" contradicts with EXPORTS of module %s",
-		name, mod->Identifier);
+	/* Conditional debug */
+	if(!(arg->expr->_mark & TM_BROKEN)) {
+		arg->expr->_mark |= TM_BROKEN;
+		FATAL("EXPORTS section of module %s in %s "
+			"does not mention %s at line %d",
+			mod->Identifier, mod->source_file_name, name,
+			arg->expr->_lineno);
+	}
 
 	errno = ESRCH;
 	return -1;
