From b67f8f64fab6c6a0b3d30950cbf385a06c4796c7 Mon Sep 17 00:00:00 2001
From: Andreas Gattringer <andreas.gattringer@univie.ac.at>
Date: Tue, 11 Jul 2023 12:07:26 +0200
Subject: [PATCH] butterflies: fix generation calculation bug

---
 src/modules/butterflies/butterflies_populations.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/modules/butterflies/butterflies_populations.c b/src/modules/butterflies/butterflies_populations.c
index 03f842c..c7fb032 100644
--- a/src/modules/butterflies/butterflies_populations.c
+++ b/src/modules/butterflies/butterflies_populations.c
@@ -102,10 +102,14 @@ void bf_cell_maturation(struct cats_grid *grid, struct cats_thread_info *ts, cat
         struct conf_data_butterflies *module_conf = CATS_MODULE_DATA;
         float this_generation_fraction = 1.0f;
         float local_generation = data->generations[row][col];
+        int32_t global_max_generation = module_conf->generations_max;
         int32_t local_max_generation = (int32_t) ceilf(local_generation);
+        int32_t global_current_generation = data->generation_current;
         float current_generation_float = (float) data->generation_current;
 
-        if (current_generation_float == local_generation
+        if (global_current_generation == global_max_generation) {
+                this_generation_fraction = 1.0f;
+        } else if (current_generation_float == local_generation
             || data->generation_current == module_conf->generations_min) {
                 this_generation_fraction = 1.0f;
         } else if (data->generation_current == local_max_generation) {
-- 
GitLab