diff --git a/src/cats/threading/threading-helpers.c b/src/cats/threading/threading-helpers.c
index 0160f610d0f5a991342862f8bacdf688a7e2555f..b0e88c2302329f888de1c490d0698a8fe7c0e70b 100644
--- a/src/cats/threading/threading-helpers.c
+++ b/src/cats/threading/threading-helpers.c
@@ -50,9 +50,6 @@ initialize_thread(struct cats_thread_info *thread, struct cats_grid *grid, struc
                 zero_statistics_stats(&thread->stats[i]);
         }
 
-        thread->rw_debug_cells_with_adults = 0;
-        thread->rw_debug_random_walks = 0;
-        thread->rw_debug_deposits = 0;
         thread->seed = get_random_seed(false);
 
         for (int i = 0; i < 4; i++) {
diff --git a/src/cats/threading/threading.h b/src/cats/threading/threading.h
index b34f2a2a9e462b4db9f15a0198218b4a8c2f1b3b..2dceb0c2513e8a459fa058e28c442f604e41ad65 100644
--- a/src/cats/threading/threading.h
+++ b/src/cats/threading/threading.h
@@ -50,9 +50,6 @@ struct cats_thread_info {
         struct cats_configuration *conf;
         gsl_rng *rng;
         unsigned int rng_seed;
-        int64_t rw_debug_cells_with_adults;
-        int64_t rw_debug_random_walks;
-        int64_t rw_debug_deposits;
         char *rng_state_buffer;
         int32_t rng_buf_size;
         struct random_data *rng_state;
diff --git a/src/modules/butterflies/butterflies_actions.c b/src/modules/butterflies/butterflies_actions.c
index 92a96f2f02601dfa9c6e60f28c8225fb5bfe22a1..8aa296c4ac92134e0f3362457b2c15c4b2445ffd 100644
--- a/src/modules/butterflies/butterflies_actions.c
+++ b/src/modules/butterflies/butterflies_actions.c
@@ -112,7 +112,6 @@ void grid_butterflies_maturation(struct cats_grid *grid, struct cats_thread_info
         const cats_dt_coord start_col = ts->area.start_col;
         const cats_dt_coord end_col = ts->area.end_col;
 
-        ts->rw_debug_cells_with_adults = 0;
 
         for (cats_dt_coord row = start_row; row < end_row; row++) {
                 for (cats_dt_coord col = start_col; col < end_col; col++) {
@@ -174,11 +173,6 @@ void butterflies_area_dispersal(struct cats_grid *grid, struct cats_thread_info
         const cats_dt_coord start_col = ts->area.start_col;
         const cats_dt_coord end_col = ts->area.end_col;
 
-        ts->rw_debug_cells_with_adults = 0;
-        ts->rw_debug_random_walks = 0;
-        ts->rw_debug_deposits = 0;
-
-
         for (cats_dt_coord row = start_row; row < end_row; row++) {
                 for (cats_dt_coord col = start_col; col < end_col; col++) {
                         if (cell_excluded_by_overlay(conf, row, col)
@@ -256,12 +250,11 @@ enum action_status bf_action_dispersal(struct cats_grid *grid, struct cats_confi
         threaded_action(&butterflies_area_dispersal, grid, conf, TS_DISPERSAL);
         struct conf_data_butterflies *module_conf = CATS_MODULE_DATA;
 
-        for (enum butterfly_stats which = BF_POPULATED_AT_DISPERSAL; which < BF_STAT_MAX; which++) {
+        for (enum butterfly_stats which = BF_RANDOM_WALK_DEPOSIT_COUNT; which < BF_STAT_MAX; which++) {
                 int64_t stat_id = module_conf->stat_ids[which];
                 log_message(LOG_INFO, "STAT %s: %ld", bf_get_stats_field_name(which), grid->stats.stats[stat_id]);
         }
 
-
         return ACTION_RUN;
 }
 
diff --git a/src/modules/butterflies/butterflies_dispersal.c b/src/modules/butterflies/butterflies_dispersal.c
index b995e3dab695c13bf7998b6dba32c35602ee734f..7448a98e88ae635efa25c5f45229521b8a3bc69b 100644
--- a/src/modules/butterflies/butterflies_dispersal.c
+++ b/src/modules/butterflies/butterflies_dispersal.c
@@ -41,7 +41,7 @@ static void inline single_random_walk(struct cats_thread_info *ts, struct cats_g
         const struct grid_data_butterflies *data = grid->grid_modules[module_id].module_data;
         const struct conf_data_butterflies *module_conf = CATS_MODULE_DATA;
         const bool debug_rw = module_conf->debug_rw;
-
+        const int64_t stat_id_deposits = module_conf->stat_ids[BF_RANDOM_WALK_DEPOSIT_COUNT];
 
         int32_t eggs_left = eggs;
         const cats_dt_coord max_steps = module_conf->animal_dispersal_max_radius;
@@ -94,7 +94,7 @@ static void inline single_random_walk(struct cats_thread_info *ts, struct cats_g
 
                 eggs_left -= eggs_to_deposit;
                 data->eggs[row][col] += (float) eggs_to_deposit;
-                ts->rw_debug_deposits++;
+                increase_custom_stat(ts->stats, stat_id_deposits, 1);
                 if (debug_rw) {
                         fprintf(module_conf->debug_rw_file, "%d,%d,%d,%d,%d,%d,%d\n", rw_num, row, col, step + 1,
                                 module_conf->animal_dispersal_max_radius - step - 1, eggs_to_deposit, eggs_left);
@@ -127,7 +127,6 @@ butterflies_cell_dispersal(struct cats_grid *grid, struct cats_thread_info *ts,
         const cats_dt_population total_adults = get_adult_population(grid, row, col);
 
         if (total_adults == 0) return;
-        ts->rw_debug_cells_with_adults++;
         struct conf_data_butterflies *module_conf = CATS_MODULE_DATA;
         // total females: how many of the total adults are female, as drawn from a binomial distribution with p = 0.5
         // can be safely cast, because gsl_ran_binomial will return a number <= total_adults
@@ -164,7 +163,7 @@ butterflies_cell_dispersal(struct cats_grid *grid, struct cats_thread_info *ts,
         assert(stationary_females >= 0);
         assert(wandering_females >= 0);
 
-
+        const int64_t stat_id_rw = module_conf->stat_ids[BF_RANDOM_WALK_COUNT];
         const int module_id = CATS_MODULE_ID;
         struct grid_data_butterflies *data = grid->grid_modules[module_id].module_data;
         const bool debug_rw = module_conf->debug_rw;
@@ -217,7 +216,8 @@ butterflies_cell_dispersal(struct cats_grid *grid, struct cats_thread_info *ts,
 
 
                 single_random_walk(ts, grid, row, col, eggs_to_disperse_per_female, egg_fraction_step, rw_number);
-                ts->rw_debug_random_walks++;
+                increase_custom_stat(ts->stats, stat_id_rw, 1);
+
         }
         if (debug_rw) {
                 fflush(module_conf->debug_rw_file);
diff --git a/src/modules/butterflies/butterflies_stats.c b/src/modules/butterflies/butterflies_stats.c
index bef5daf5d790d9cd2b68e479f2bba24a567c2fa5..3a866172ba742ed7c2a694e9a6fce3fee392bccb 100644
--- a/src/modules/butterflies/butterflies_stats.c
+++ b/src/modules/butterflies/butterflies_stats.c
@@ -26,9 +26,9 @@ const char *bf_get_stats_field_name(enum butterfly_stats which)
                         return "unpopulated_unfit";
                 case BF_STAT_EXCLUDED:
                         return "excluded";
-                case BF_POPULATED_AT_DISPERSAL:
-                        return "populated_at_dispersal";
 
+                case BF_RANDOM_WALK_DEPOSIT_COUNT:
+                        return "random_walk_deposit_count";
                 case BF_RANDOM_WALK_COUNT:
                         return "random_walk_count";
 
@@ -36,7 +36,6 @@ const char *bf_get_stats_field_name(enum butterfly_stats which)
                         return "random_walk_step_count";
                 case BF_OUTPUT_STAT_MAX:
                         return "<guard value>";
-
                 case BF_STAT_MAX:
                         break;
                 case BF_CELLS_WITH_EGGS:
diff --git a/src/modules/butterflies/butterflies_stats.h b/src/modules/butterflies/butterflies_stats.h
index e213208d3b0647ac0c45e944247d593b1f7f3dc4..7537718b98f3fa814ef15682b0911277624ef51e 100644
--- a/src/modules/butterflies/butterflies_stats.h
+++ b/src/modules/butterflies/butterflies_stats.h
@@ -13,12 +13,12 @@ enum butterfly_stats {
     BF_STAT_UNPOPULATED_FIT,
     BF_STAT_UNPOPULATED_UNFIT,
     BF_STAT_EXCLUDED,
-    BF_OUTPUT_STAT_MAX,
-    BF_POPULATED_AT_DISPERSAL,
+    BF_RANDOM_WALK_DEPOSIT_COUNT,
     BF_RANDOM_WALK_COUNT,
     BF_RANDOM_WALK_STEP_COUNT,
     BF_CELLS_WITH_EGGS,
     BF_CELLS_WITH_EGGS_REMOVED,
+    BF_OUTPUT_STAT_MAX,
     BF_STAT_MAX
 };