--- art.c.orig	Tue Feb 11 10:27:26 1997
+++ art.c	Thu Feb 13 15:27:49 1997
@@ -129,6 +129,10 @@
 
 Slrn_Article_Line_Type *Slrn_Article_Lines;
 
+#if SLRN_HAS_KILL_LOG
+char *Slrn_Kill_Log = NULL;
+#endif
+
 /*}}}*/
 /*{{{ static global variables */
 static SLscroll_Window_Type Slrn_Article_Window;
@@ -188,6 +192,10 @@
  * If it points anywhere else, ignore it.
  */
 
+#if SLRN_HAS_KILL_LOG
+static FILE *fp_killlog = NULL;
+#endif
+
 /*}}}*/
 /*{{{ static function declarations */
 
@@ -4546,7 +4554,14 @@
      }
    else if (score < Slrn_Low_Score_Max)
      {
-	if ((score <= Slrn_Kill_Score_Max) && apply_kill)
+	int kill_art = ((score <= Slrn_Kill_Score_Max) && apply_kill);
+#if SLRN_HAS_KILL_LOG
+	if (fp_killlog != NULL)
+	  fprintf( fp_killlog, "[%s]\nScore: %d%s\nFrom: %s\nSubject: %s\n"
+		  "Message-ID: %s\n\n", Slrn_Current_Group_Name, score,
+		  kill_art?" (killed)":"", h->from, h->subject, h->msgid );
+#endif
+	if (kill_art)
 	  {
 	     int number = h->number;
 	     SLFREE (h->subject);
@@ -6241,7 +6256,16 @@
 #endif
    
    if (score && (1 == slrn_open_score (Slrn_Current_Group_Name)))
-     Perform_Scoring = 1;
+     {
+#if SLRN_HAS_KILL_LOG
+	if ((Slrn_Kill_Log != NULL) && (fp_killlog == NULL))
+	  {
+	     char file[SLRN_MAX_PATH_LEN];
+	     fp_killlog = slrn_open_home_file( Slrn_Kill_Log, "a", file, 1 );
+	  }
+#endif
+	Perform_Scoring = 1;
+     }
    else Perform_Scoring = 0;
    
    Slrn_Server_Min = r->min;
@@ -6383,7 +6407,23 @@
    else if (Slrn_Score_After_XOver 
        && Perform_Scoring)
      score_headers ();
-   
+
+#if SLRN_HAS_KILL_LOG
+   if (fp_killlog)
+     {
+	fprintf( fp_killlog, "[%s] killed %u, high %u, low %u\n\n",
+		Slrn_Current_Group_Name, Number_Killed,
+		Number_High_Scored, Number_Low_Scored );
+
+# if 0 /* could close file, but just flushing saves time entering a group */
+	fclose( fp_killlog );
+	fp_killlog = NULL;
+# else
+	fflush( fp_killlog ); /* flush buffer to disk */
+# endif
+     }
+#endif
+
    if (Headers == NULL)
      {
 	slrn_close_score ();
--- art.h.orig	Thu Feb 13 15:01:43 1997
+++ art.h	Thu Feb 13 15:03:20 1997
@@ -38,6 +38,9 @@
 #endif
 extern int Slrn_New_Subject_Breaks_Threads;
 extern int Slrn_Sig_Is_End_Of_Article;
+#if SLRN_HAS_KILL_LOG
+extern char *Slrn_Kill_Log;
+#endif
 
 #endif				       /* NOT SLRNPULL_CODE */
 
--- startup.c.orig2	Thu Feb 13 12:28:06 1997
+++ startup.c	Thu Feb 13 12:32:04 1997
@@ -501,6 +501,13 @@
 	  NULL
 #endif
      },
+     {"kill_log",
+#if SLRN_HAS_KILL_LOG
+        &Slrn_Kill_Log
+#else
+	NULL
+#endif
+     },
 
      {NULL, NULL}
 };
--- slrnfeat.h.orig	Thu Feb 13 13:28:40 1997
+++ slrnfeat.h	Thu Feb 13 13:30:02 1997
@@ -53,6 +53,11 @@
  */
 #define SLRN_HAS_CHARACTER_MAP	1
 
+/* If you want to be able to generate a log of posts killed by the scorefile
+ * (i.e. given a score of -9999) set this to 1.
+ */
+#define SLRN_HAS_KILL_LOG	1
+
 /* The SLTCP code has not been ported to VMS due to the lack of a standardized
  * tcp-ip interface on VMS.  It should be ok on Unix and OS/2.
  */
