diff --git a/ldap_servers/LdapServerAdmin.class.php b/ldap_servers/LdapServerAdmin.class.php
index d32fe2e..4f269a4 100644
--- a/ldap_servers/LdapServerAdmin.class.php
+++ b/ldap_servers/LdapServerAdmin.class.php
@@ -58,6 +58,9 @@ class LdapServerAdmin extends LdapServer {
     if (trim($values['bindpw'])) {
       $this->bindpw_new = trim($values['bindpw']);
     }
+    if ($values['clear_bindpw']) {
+      $this->bindpw_clear = TRUE;
+    }
     $this->user_dn_expression = trim($values['user_dn_expression']);
     $this->basedn = $this->linesToArray(trim($values['basedn']));
     $this->user_attr = trim($values['user_attr']);
@@ -132,7 +135,7 @@ base dns for authentication and authorization and (2) non anonymous bind users w
 for different purposes.</p>
 EOF;
 
-$form['#prefix'] = t($form['#prefix']);
+  $form['#prefix'] = t($form['#prefix']);
 
   $form['server'] = array(
     '#type' => 'fieldset',
@@ -254,15 +257,22 @@ $form['#prefix'] = t($form['#prefix']);
     '#maxlength' => 255,
     '#default_value' => "",
   );
-
   $form['binding_service_acct']['clear_bindpw'] = array(
     '#type' => 'checkbox',
     '#title' => t('Clear existing password from database.  Check this when switching away from service account binding.'),
     '#default_value' => 0,
   );
 
-  if ( $form['binding_service_acct']['bindpw']) {
-    $form['binding_service_acct']['bindpw']['#description'] = t('<p>Leave emtpy to leave password unchanged.</p>');
+  /**
+   * This might not be the cleanest way to handle this, but it hides
+   * conflicting fields that will confuse site admins without breaking
+   * any of the existing form processing.
+   */
+  if(empty($this->bindpw)) {
+    $form['binding_service_acct']['clear_bindpw']['#type'] = 'hidden';
+  }
+  else {
+    $form['binding_service_acct']['bindpw']['#type'] = 'hidden';
   }
 
   $form['users'] = array(
@@ -394,7 +404,7 @@ $form['#prefix'] = t($form['#prefix']);
       $errors['binddn'] =  t('When using "Bind with Service Account", Bind DN is required.');
     }
 
-    if ($this->bind_method == LDAP_SERVERS_BIND_METHOD_SERVICE_ACCT && !$this->bindpw) {
+    if ($this->bind_method == LDAP_SERVERS_BIND_METHOD_SERVICE_ACCT && !$this->bindpw_new && !$this->bindpw) {
       $errors['bindpw'] =  t('When using "Bind with Service Account", Bind password is required.');
     }
 
@@ -469,10 +479,6 @@ public function drupalFormSubmit($op, $values) {
 
   $this->populateFromDrupalForm($op, $values);
 
-  if ($values['clear_bindpw']) {
-    $this->bindpw_clear = NULL;
-  }
-
   if ($op == 'delete') {
     $this->delete($this);
   }
