diff --git a/libasn1fix/check_fixer.c b/libasn1fix/check_fixer.c
index 3f3f9fa..5eae798 100644
--- a/libasn1fix/check_fixer.c
+++ b/libasn1fix/check_fixer.c
@@ -10,8 +10,11 @@
 #include <sysexits.h>
 #endif
 #include <errno.h>
+#include <libgen.h>
 
 #include "asn1fix.h"
+#include "asn1_buffer.h"
+#include "asn1_namespace.h"
 
 #ifndef TOP_SRCDIR
 #define TOP_SRCDIR_S    ".."
@@ -58,13 +61,18 @@
 	 * Go into a directory with tests.
 	 */
 	if(ac <= 1) {
-        const char *asn1_tests_dir = getenv("ASN1_TESTS_DIR");
-        if(!asn1_tests_dir)
-            asn1_tests_dir = TOP_SRCDIR_S "/tests/tests-asn1c-compiler";
-        fprintf(stderr, "Testing in %s...\n", asn1_tests_dir);
-        ret = chdir(asn1_tests_dir);
+        abuf *asn1_tests_dirname = abuf_new();
+        const char *top_srcdir = getenv("top_srcdir");
+        if(!top_srcdir) top_srcdir = TOP_SRCDIR_S;
+
+        abuf_printf(asn1_tests_dirname, "%s/tests/tests-asn1c-compiler",
+                    top_srcdir);
+
+        fprintf(stderr, "Testing in %s...\n", top_srcdir);
+        ret = chdir(asn1_tests_dirname->buffer);
         if(ret == -1)
-            fprintf(stderr, "%s: %s\n", asn1_tests_dir, strerror(errno));
+            fprintf(stderr, "%s: %s\n", asn1_tests_dirname->buffer,
+                    strerror(errno));
         assert(ret == 0);
         /* For some reasons, tests could be hidden under extra tests dir. */
 #ifdef	_WIN32
@@ -195,17 +203,35 @@
 	if(!asn) return r_value;
 
 	if(r_value == 0) {
+        char *fname_copy = strdup(fname);
+        char *test_dir = dirname(fname_copy);
+        abuf *skeletons_dirname = abuf_new();
 		asn1p_t *std_asn;
-		std_asn = asn1p_parse_file("../../skeletons/standard-modules/ASN1C-UsefulInformationObjectClasses.asn1", A1P_NOFLAGS);
-		if(std_asn) {
+
+        abuf_printf(skeletons_dirname,
+                    "%s/../../skeletons/standard-modules/"
+                    "ASN1C-UsefulInformationObjectClasses.asn1",
+                    test_dir);
+        free(fname_copy);
+
+        std_asn = asn1p_parse_file(skeletons_dirname->buffer, A1P_NOFLAGS);
+        if(std_asn) {
 			asn1p_module_t *mod;
 			while((mod = TQ_REMOVE(&(std_asn->modules), mod_next))) {
 				mod->_tags |= MT_STANDARD_MODULE;
 				TQ_ADD(&(asn->modules), mod, mod_next);
 			}
 			asn1p_delete(std_asn);
-		}
-	}
+
+            /* Allow referencing imported modules. */
+            asn1f_use_standard_namespaces(asn);
+		} else {
+            fprintf(stderr, "%s: %s\n", skeletons_dirname->buffer,
+                    strerror(errno));
+        }
+
+        abuf_free(skeletons_dirname);
+    }
 
 	/*
 	 * Perform semantical checks and fixes.
@@ -364,8 +390,6 @@
 		return -1;
 	}
 
-	assert(value->type = ATV_INTEGER);
-
 	return 0;
 }
 
