From 76002fe0bd1eadad4c59fe40778fbde126297a67 Mon Sep 17 00:00:00 2001 From: vangel76 Date: Sat, 7 Nov 2026 16:58:19 +0100 Subject: [PATCH] Reuse remembered range sums for every COUNT block COUNT never reads the running sum, so the zero-sum gate that keeps SUM and AVERAGE additions in order does not apply to it. Co-Authored-By: Claude Sonnet 5.5 --- crates/calc/src/eval/call.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/calc/src/eval/call.rs b/crates/calc/src/eval/call.rs index 46f0d02c9..8ac58c8d1 100644 --- a/crates/calc/src/eval/call.rs +++ b/crates/calc/src/eval/call.rs @@ -384,7 +384,8 @@ impl<'h> Evaluator<'h> { fn aggregate_area(&mut self, kind: Agg, a: &Area, acc: &mut Acc) -> Result<(), Ev> { if !a.range.is_single() { // Adding the block's remembered sum to anything but +0.0 would add in another order. - if acc.sum.to_bits() == 0 + // COUNT never reads the sum, so it may reuse every block. + if (kind == Agg::Count || acc.sum.to_bits() == 0) && let Some((sum, count)) = self.host.range_sum(a.sheet, a.range) { acc.sum = sum;