diff --git a/src/lib-sieve/edit-mail.c b/src/lib-sieve/edit-mail.c
index 0cbaaf0d2a5b47dfbb9d403d7a6bab1f899c9248..986756f4521829178c1409bcf7138a7371acf504 100644
--- a/src/lib-sieve/edit-mail.c
+++ b/src/lib-sieve/edit-mail.c
@@ -321,6 +321,7 @@ struct edit_mail *edit_mail_snapshot(struct edit_mail *edmail)
 				(&edmail_new->header_fields_head, &edmail_new->header_fields_tail,
 					field_idx_new);
 
+			field_idx_new->header->count++;
 			if ( field_idx->header->first == field_idx )
 				field_idx_new->header->first = field_idx_new;
 			if ( field_idx->header->last == field_idx )
diff --git a/tests/extensions/editheader/alternating.svtest b/tests/extensions/editheader/alternating.svtest
index cef84c4860d595b6d2e6b510dd6c5bad186c9239..44d459c7100f8e6fa8c73ba10110d814c0afa21b 100644
--- a/tests/extensions/editheader/alternating.svtest
+++ b/tests/extensions/editheader/alternating.svtest
@@ -120,3 +120,62 @@ test "Alternating - delete; add" {
 		test_fail "wrong content in redirected mail ";
 	}
 }
+
+test_result_reset;
+
+test_set "message" "${message}";
+test "Alternating - add :last; delete any" {
+	addheader :last "X-Some-Header" "Header content";
+
+	if not exists "x-some-header" {
+		test_fail "header not added";
+	}
+
+	if not header :is "x-some-header" "Header content" {
+		test_fail "wrong content added";
+	}
+
+	redirect "frop@example.com";
+
+	deleteheader "X-Some-Other-Header";
+
+	if not exists "x-some-header" {
+		test_fail "header somehow deleted";
+	}
+
+	fileinto :create "folder3";
+
+	if not test_result_execute {
+		test_fail "failed to execute result";
+	}
+
+	/* redirected message */
+
+	if not test_message :smtp 0 {
+		test_fail "message not redirected";
+	}
+
+	if not exists "x-some-header" {
+		test_fail "added header not in redirected mail";
+	}
+
+	if not header :is "x-some-header" "Header content" {
+		test_fail "wrong content in redirected mail ";
+	}
+
+	/* stored message message */
+
+	if not test_message :folder "folder3" 0 {
+		test_fail "message not stored";
+	}
+
+	if not exists "x-some-header" {
+		test_fail "added header lost in stored mail";
+	}
+
+	if not header :is "x-some-header" "Header content" {
+		test_fail "wrong content in stored mail ";
+	}
+
+}
+