diff --git a/authen.c b/authen.c
index 330c4dc..3b35ac2 100644
--- a/authen.c
+++ b/authen.c
@@ -106,6 +106,11 @@ do_start(u_char *pak)
 
     identity.NAC_address = tac_make_string(p, (int)start->rem_addr_len);
     p += start->rem_addr_len;
+    if (start->rem_addr_len <= 0) {
+        strcpy(session.rem_addr, "unknown-rem_addr");
+    } else {
+        strcpy(session.rem_addr, identity.NAC_address);
+    }
 
     identity.priv_lvl = start->priv_lvl;
 
diff --git a/author.c b/author.c
index fe8eb28..55eb4c5 100644
--- a/author.c
+++ b/author.c
@@ -98,6 +98,11 @@ author(u_char *pak)
 
     identity.NAC_address = tac_make_string(p, (int)apak->rem_addr_len);
     p += apak->rem_addr_len;
+    if (apak->rem_addr_len <= 0) {
+        strcpy(session.rem_addr, "unknown-rem_addr");
+    } else {
+        strcpy(session.rem_addr, identity.NAC_address);
+    }
 
     identity.priv_lvl = apak->priv_lvl;
 
diff --git a/default_fn.c b/default_fn.c
index dc1be81..603f465 100644
--- a/default_fn.c
+++ b/default_fn.c
@@ -201,9 +201,9 @@ default_fn(struct authen_data *data)
 	return(0);
     case TAC_PLUS_AUTHEN_STATUS_FAIL:
 	if (session.peer)
-	    report(LOG_NOTICE, "login failure: %s %s (%s) %s",
+	    report(LOG_NOTICE, "login failure: %s %s (%s) %s (%s)",
 		   name == NULL ? "unknown" : name,
-		   session.peer, session.peerip, session.port);
+		   session.peer, session.peerip, session.port, session.rem_addr);
 	else
 	    report(LOG_NOTICE, "login failure: %s %s %s",
 		   name == NULL ? "unknown" : name,
diff --git a/tac_plus.h b/tac_plus.h
index c7f791c..92b2be8 100644
--- a/tac_plus.h
+++ b/tac_plus.h
@@ -271,6 +271,7 @@ struct acct_rec {
 };
 
 #define NAS_PORT_MAX_LEN                255
+#define NAS_REM_ADDR_MAX_LEN            255
 
 struct session {
     int session_id;                /* host specific unique session id */
@@ -289,6 +290,7 @@ struct session {
     char *cfgfile;                 /* config file name */
     char *acctfile;                /* name of accounting file */
     char port[NAS_PORT_MAX_LEN+1]; /* For error reporting */
+    char rem_addr[NAS_REM_ADDR_MAX_LEN+1]; /* For error reporting */
     u_char version;                /* version of last packet read */
 };
 
