diff --git a/src/openvpn/crypto.c b/src/openvpn/crypto.c
index 3096f3b0..b3021d4f 100644
--- a/src/openvpn/crypto.c
+++ b/src/openvpn/crypto.c
@@ -1545,11 +1545,18 @@ ascii2keydirection(int msglevel, const char *str)
 }
 
 const char *
-keydirection2ascii(int kd, bool remote)
+keydirection2ascii(int kd, bool remote, bool humanreadable)
 {
     if (kd == KEY_DIRECTION_BIDIRECTIONAL)
     {
-        return NULL;
+        if (humanreadable)
+        {
+            return "not set";
+        }
+        else
+        {
+            return NULL;
+        }
     }
     else if (kd == KEY_DIRECTION_NORMAL)
     {
diff --git a/src/openvpn/crypto.h b/src/openvpn/crypto.h
index 8e8ee8f5..e1e318eb 100644
--- a/src/openvpn/crypto.h
+++ b/src/openvpn/crypto.h
@@ -470,7 +470,7 @@ void must_have_n_keys(const char *filename, const char *option, const struct key
 
 int ascii2keydirection(int msglevel, const char *str);
 
-const char *keydirection2ascii(int kd, bool remote);
+const char *keydirection2ascii(int kd, bool remote, bool humanreadable);
 
 /* print keys */
 void key2_print(const struct key2 *k,
diff --git a/src/openvpn/options.c b/src/openvpn/options.c
index 66e1f9d1..9f5cd6ed 100644
--- a/src/openvpn/options.c
+++ b/src/openvpn/options.c
@@ -1706,7 +1706,7 @@ show_settings(const struct options *o)
 #endif
 
     SHOW_STR(shared_secret_file);
-    SHOW_INT(key_direction);
+    SHOW_PARM(key_direction, keydirection2ascii(o->key_direction, false, true), "%s");
     SHOW_STR(ciphername);
     SHOW_BOOL(ncp_enabled);
     SHOW_STR(ncp_ciphers);
@@ -3583,7 +3583,7 @@ options_string(const struct options *o,
      * Key direction
      */
     {
-        const char *kd = keydirection2ascii(o->key_direction, remote);
+        const char *kd = keydirection2ascii(o->key_direction, remote, false);
         if (kd)
         {
             buf_printf(&out, ",keydir %s", kd);
