diff -ur slrn-0.9.7.2.orig/src/art.c slrn-0.9.7.2/src/art.c
--- slrn-0.9.7.2.orig/src/art.c	Mon Aug 20 20:41:05 2001
+++ slrn-0.9.7.2/src/art.c	Sun Sep 16 12:17:47 2001
@@ -7767,6 +7767,15 @@
 
 /*}}}*/
 
+void slrn_set_header_flags (Slrn_Header_Type *h, unsigned int flags) /*{{{*/
+{
+   if (h->flags & HEADER_READ) Number_Read--;
+   if (flags & HEADER_READ) Number_Read++;
+   h->flags &= ~HEADER_HARMLESS_FLAGS_MASK;
+   h->flags |= (flags & HEADER_HARMLESS_FLAGS_MASK);
+}
+/*}}}*/
+
 static void init_graphic_chars (void)
 {
 #ifndef IBMPC_SYSTEM
diff -ur slrn-0.9.7.2.orig/src/art.h slrn-0.9.7.2/src/art.h
--- slrn-0.9.7.2.orig/src/art.h	Mon Aug 20 19:15:29 2001
+++ slrn-0.9.7.2/src/art.h	Sun Sep 16 12:09:27 2001
@@ -144,6 +144,7 @@
 extern Slrn_Header_Type *Slrn_Current_Header;
 
 extern int slrn_goto_header (Slrn_Header_Type *, int);
+extern void slrn_set_header_flags (Slrn_Header_Type *, unsigned int);
 extern int slrn_locate_header_by_msgid (char *, int, int);
 
 
diff -ur slrn-0.9.7.2.orig/src/interp.c slrn-0.9.7.2/src/interp.c
--- slrn-0.9.7.2.orig/src/interp.c	Sun Jul 22 19:10:11 2001
+++ slrn-0.9.7.2/src/interp.c	Sun Sep 16 12:13:13 2001
@@ -910,14 +910,11 @@
 
 static void set_header_flags (int *flagsp) /*{{{*/
 {
-   unsigned int flags;
    if ((-1 == check_article_mode ())
        || (Slrn_Current_Header == NULL))
      return;
    
-   Slrn_Current_Header->flags &= ~HEADER_HARMLESS_FLAGS_MASK;
-   flags = ((unsigned int) *flagsp) & HEADER_HARMLESS_FLAGS_MASK;
-   Slrn_Current_Header->flags |= flags;
+   slrn_set_header_flags (Slrn_Current_Header, (unsigned int) *flagsp);
 }
 
 /*}}}*/
