From 8d64e5e0d75481a14de889d91077d33b643ad115 Mon Sep 17 00:00:00 2001 From: Ben Hayes Date: Thu, 12 Feb 2026 21:22:01 +0000 Subject: [PATCH] Fix summary_id set to -1 for wheatsheaf mean outputs (#399) Guard against sentinel value -1 propagating as summary_id in the indexed path when the summary index file is empty or contains no processable data. Skip unpopulated mean_count entries in WriteWheatsheafMean to prevent writing rows with zero return period and loss when all insured losses are zero. Co-Authored-By: Claude Opus 4.6 --- src/leccalc/aggreports.cpp | 1 + src/leccalc/leccalc.cpp | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/leccalc/aggreports.cpp b/src/leccalc/aggreports.cpp index 01e39868..e3cd3b09 100644 --- a/src/leccalc/aggreports.cpp +++ b/src/leccalc/aggreports.cpp @@ -953,6 +953,7 @@ void aggreports::WriteWheatsheafMean(const std::vector &fileIDs, int i = 1; for (auto mc : rmc) { + if (mc.count == 0) continue; // Skip unpopulated entries if (WriteEPTOutput != nullptr) { (this->*WriteEPTOutput)(fileIDs, s.first, epcalc, eptype, mc.retperiod, diff --git a/src/leccalc/leccalc.cpp b/src/leccalc/leccalc.cpp index d44814c3..b124a0f7 100644 --- a/src/leccalc/leccalc.cpp +++ b/src/leccalc/leccalc.cpp @@ -558,10 +558,12 @@ namespace leccalc { } } } - summaryids.clear(); - summaryids.insert(last_summary_id); - outputaggreports(agg, summaryids, out_loss, samplesize, - fileIDs_occ, fileIDs_agg, hasEPT); + if (last_summary_id != -1) { + summaryids.clear(); + summaryids.insert(last_summary_id); + outputaggreports(agg, summaryids, out_loss, samplesize, + fileIDs_occ, fileIDs_agg, hasEPT); + } } else { if (indexFiles.size() > 0) { fprintf(stderr, "%d summary index files missing: "