diff --git a/account/newuser.in b/account/newuser.in
index 86f903aebb3814a6a18b158871fbaeecf351f1a2..bbfad8fb392da632b41782c1cfb936b67ca88b69 100644
--- a/account/newuser.in
+++ b/account/newuser.in
@@ -239,7 +239,7 @@ foreach my $key (keys(%{ $xmlparse->{'attribute'} })) {
 #
 if (exists($newuser_args{'uid'})) {
     UserError("User already exists; pick another login name!")
-	if (User->Lookup($newuser_args{'uid'}));
+	if (User->LookupByUidAll($newuser_args{'uid'}));
     
     UserError("Reserved user name; pick another login name!")
 	if (getpwnam($newuser_args{'uid'}));
diff --git a/db/User.pm.in b/db/User.pm.in
index 887c135a6d9c5844c8a3a0c4a505e5b374d9286c..f3480996cff2078051956dbfee169d47d03ca40b 100644
--- a/db/User.pm.in
+++ b/db/User.pm.in
@@ -188,6 +188,22 @@ sub LookupByUid($$)
     return User->Lookup($uid);
 }
 
+# Include archived users, as for checking a newuser account.
+sub LookupByUidAll($$)
+{
+    my ($class, $uid) = @_;
+
+    my $query_result =
+	DBQueryFatal("select uid_idx from users where uid='$uid'");
+
+    return undef
+	if (! $query_result || !$query_result->numrows);
+
+    my ($uid_idx) = $query_result->fetchrow_array();
+
+    return User->Lookup($uid_idx);
+}
+
 #
 # Lookup user given the unix uid ($UID typically).
 #