Index: program/js/app.js
===================================================================
--- program/js/app.js	(revision c833ed4053106c9df58b84a441cc4509cda45a38)
+++ program/js/app.js	(revision 500af6fcf802671d505e3b98834aad3becc75b80)
@@ -2598,4 +2598,5 @@
 
     if (!html_mode) {
+      this.set_caret_pos(input_message, this.env.top_posting ? 0 : $(input_message).val().length);
       // add signature according to selected identity
       // if we have HTML editor, signature is added in callback
@@ -2603,5 +2604,4 @@
         this.change_identity(input_from[0]);
       }
-      this.set_caret_pos(input_message, this.env.top_posting ? 0 : $(input_message).val().length);
     }
 
@@ -2780,13 +2780,11 @@
       show_sig = this.env.show_sig;
 
-    var sig, cursor_pos, p = -1,
+    var cursor_pos, p = -1,
       id = obj.options[obj.selectedIndex].value,
       input_message = $("[name='_message']"),
       message = input_message.val(),
       is_html = ($("input[name='_is_html']").val() == '1'),
+      sig = this.env.identity,
       sig_separator = this.env.sig_above && (this.env.compose_mode == 'reply' || this.env.compose_mode == 'forward') ? '---' : '-- ';
-
-    if (!this.env.identity)
-      this.env.identity = id
 
     // enable manual signature insert
@@ -2798,6 +2796,6 @@
     if (!is_html) {
       // remove the 'old' signature
-      if (show_sig && this.env.identity && this.env.signatures && this.env.signatures[this.env.identity]) {
-        sig = this.env.signatures[this.env.identity].is_html ? this.env.signatures[this.env.identity].plain_text : this.env.signatures[this.env.identity].text;
+      if (show_sig && sig && this.env.signatures && this.env.signatures[sig]) {
+        sig = this.env.signatures[sig].is_html ? this.env.signatures[sig].plain_text : this.env.signatures[sig].text;
         sig = sig.replace(/\r\n/, '\n');
 
