diff --git a/webv4/pages/000-register.xjs b/webv4/pages/000-register.xjs
index 2ecaafe25de4d2b09fe083040ebe742115826485..2ac1d194cbd01adefa8bee5e831ffc757a7f5705 100644
--- a/webv4/pages/000-register.xjs
+++ b/webv4/pages/000-register.xjs
@@ -12,6 +12,13 @@
 
 	require('sbbsdefs.js', 'SYS_CLOSED');
 
+	if (system.settings&SYS_CLOSED) {
+?>
+		<div class="alert alert-danger"><h3><?xjs write('Sorry, the system is closed to new users.'); ?></h3></div>
+<?xjs
+		exit();
+	}
+
 	function required(mask) {
 		return ((system.new_user_questions&mask) ? (' ' + locale.strings.page_register.stat_suffix_field_required) : '');
 	}
@@ -53,6 +60,14 @@
 
 	<form id="form-register" data-toggle="validator">
 
+		<?xjs if(system.newuser_password !== '') { ?>
+		<div class="form-group">
+			<label for="newuser-password"><?xjs write(locale.strings.page_register.input_registration_password); ?></label>
+			<span title="<?xjs write(locale.strings.page_register.label_field_required); ?>" class="glyphicon glyphicon-asterisk"></span>
+			<input type="password" class="form-control" id="newuser-password" name="newuser-password" placeholder="<?xjs write(locale.strings.page_register.input_registration_password); ?>" required>
+		</div>
+		<?xjs } ?>
+
 		<div class="form-group">
 			<label for="alias"><?xjs write(locale.strings.page_register.input_alias); ?></label>
 			<span title="<?xjs write(locale.strings.page_register.label_field_required); ?>" class="glyphicon glyphicon-asterisk"></span>
@@ -176,15 +191,6 @@
 		</div>
 		<br>
 
-		<?xjs if(system.newuser_password !== '') { ?>
-		<div class="form-group">
-			<label for="newuser-password">
-				<?xjs write(locale.strings.page_register.input_registration_password); ?>
-			</label>
-			<input type="password" id="newuser-password" name="newuser-password" data-minlength="1" maxlength="8">
-		</div>
-		<?xjs } ?>
-
 		<!-- Traps - leave these here. They will be hidden from users. -->
 		<input id="send-me-free-stuff" title="Don't fill this field" name="send-me-free-stuff" type="text">
 		<input id="subscribe-to-newsletter" title="Don't check this box" name="subscribe-to-newsletter" value="1" type="checkbox">
diff --git a/webv4/root/api/register.ssjs b/webv4/root/api/register.ssjs
index 5c6068bf03061081c9246aaf9ede12fea60d319a..98d7835c82a2d4bbe40126eaad21785e9bd6db90 100644
--- a/webv4/root/api/register.ssjs
+++ b/webv4/root/api/register.ssjs
@@ -6,6 +6,7 @@ var request = require({}, settings.web_lib + 'request.js', 'request');
 
 if (user.alias !== settings.guest) exit();
 if (!settings.user_registration) exit();
+if (system.settings&SYS_CLOSED) exit();
 
 var MIN_ALIAS = 1,
 	MIN_REALNAME = 3,