Index: mailchimp.module
===================================================================
--- mailchimp.module	(revision 1373)
+++ mailchimp.module	(working copy)
@@ -73,6 +73,7 @@
 
             else {
               $is_subscribed = _mailchimp_is_subscribed($list['id'], $account->mail, $q);
+              $form_present = isset($edit['chimpmail_list_'. $list['id']]);
               $ret = TRUE;
 
               if (
@@ -86,13 +87,16 @@
                   $ret = _mailchimp_subscribe_user($list, $merge_vars, TRUE, $q);
                 }
                 // unsubscribe a subscribed user who unchecked the box for this newsletter
-                else if ($is_subscribed && !@$edit['chimpmail_list_'. $list['id']]) {
+                else if ($is_subscribed && $form_present && !@$edit['chimpmail_list_'. $list['id']]) {
                   $ret = _mailchimp_unsubscribe_user($list, $account->mail, TRUE, $q);
                 }
-                // unsubscribe and resubscribe a user who has changed his or her email address
-                else if ($is_subscribed && $account->mail !== $edit['mail']) {
+                // update a subscribed user's record at mailchimp (in case fields have changed)
+                else if ($is_subscribed) {
                   $merge_vars = _mailchimp_load_user_list_mergevars($account->uid, $list['id'], $q->listMergeVars($list['id']));
-                  $merge_vars['EMAIL'] = $edit['mail'];
+                  // user's email address has changed
+                  if ($account->mail !== $edit['mail']) {
+                    $merge_vars['EMAIL'] = $edit['mail'];
+                  }
                   $ret = _mailchimp_update_user($list, $account->mail, $merge_vars, $q);
                 }
               }
