--- a/config/guile.m4
+++ b/config/guile.m4
@@ -61,7 +61,7 @@
 #
 AC_DEFUN([GUILE_PKG],
  [PKG_PROG_PKG_CONFIG
-  _guile_versions_to_search="m4_default([$1], [2.2 2.0 1.8])"
+  _guile_versions_to_search="m4_default([$1], [3.0 2.2 2.0 1.8])"
   if test -n "$GUILE_EFFECTIVE_VERSION"; then
     _guile_tmp=""
     for v in $_guile_versions_to_search; do
--- a/configure
+++ b/configure
@@ -14799,7 +14799,7 @@ $as_echo "no" >&6; }
 		PKG_CONFIG=""
 	fi
 fi
-  _guile_versions_to_search="2.2 2.0 1.8"
+  _guile_versions_to_search="3.0 2.2 2.0 1.8"
   if test -n "$GUILE_EFFECTIVE_VERSION"; then
     _guile_tmp=""
     for v in $_guile_versions_to_search; do
--- a/agen5/guile-iface.h
+++ b/agen5/guile-iface.h
@@ -16,6 +16,13 @@
 # define AG_SCM_TO_LONG(_v)           scm_to_long(_v)
 # define AG_SCM_TO_ULONG(_v)          ((unsigned long)scm_to_ulong(_v))
 
+#elif GUILE_VERSION < 400000
+# define AG_SCM_IS_PROC(_p)           scm_is_true( scm_procedure_p(_p))
+# define AG_SCM_LIST_P(_l)            scm_is_true( scm_list_p(_l))
+# define AG_SCM_PAIR_P(_p)            scm_is_true( scm_pair_p(_p))
+# define AG_SCM_TO_LONG(_v)           scm_to_long(_v)
+# define AG_SCM_TO_ULONG(_v)          ((unsigned long)scm_to_ulong(_v))
+
 #else
 # error unknown GUILE_VERSION
   choke me.
