diff -ru lachesis-0.2.4/config.h lachesis-0.2.4+wrfix/config.h
--- lachesis-0.2.4/config.h	Thu Aug 14 16:16:13 2003
+++ lachesis-0.2.4+wrfix/config.h	Tue Aug 19 17:47:50 2003
@@ -76,4 +76,9 @@
  */
 #define ALLOW_ANY_TO_ROLL
 
+/*
+ * Affects WROLL behavior. See engine/random.cc
+ */
+#undef WROLL_USES_SUCC_FLAG
+
 #endif /* _CONFIG_H_ */
diff -ru lachesis-0.2.4/engine/random.cc lachesis-0.2.4+wrfix/engine/random.cc
--- lachesis-0.2.4/engine/random.cc	Thu Aug 14 18:39:28 2003
+++ lachesis-0.2.4+wrfix/engine/random.cc	Tue Aug 19 18:11:14 2003
@@ -15,6 +15,7 @@
 #include "random.h"
 #include "../utils.h"
 #include "../config.h"
+#include "../types.h"
 
 TF Random_Roll(unsigned long count, unsigned long magnitude, long floor,
 	       long **rolls)
@@ -55,7 +56,16 @@
 {
   // This roller has been added for Storm, and meets the roll requirements
   // for Werewolf.
+  // Quick fix: there seems to be two different versions of botching; the
+  // ST's book goes by adjusted success total being negative, everyone
+  // else's says it's 0 successes and 1 or more botch. I don't know which
+  // is the more recent rule, but now both are supported based on
+  // WROLL_USES_SUCC_FLAG
+
   unsigned long excess, loop;
+#ifdef WROLL_USES_SUCC_FLAG
+  TF success = FALSE;
+#endif
 
   if (rolls==NULL)
     return FALSE;
@@ -73,8 +83,16 @@
 
     if ((*rolls)[loop+1]==1)
       (**rolls)--;
-    else if ((*rolls)[loop+1]>=threshold)
+    else if ((*rolls)[loop+1]>=threshold) {
       (**rolls)++;
+#ifdef WROLL_USES_SUCC_FLAG
+      success = TRUE;
+#endif
+    }
   }
+#ifdef WROLL_USES_SUCC_FLAG
+  if (success&&(**rolls)<0)
+    (**rolls)=0;
+#endif
   return TRUE;
 }
