+if ($usage) {
+ # first() does not work inside given >:(
+ while (my ($browser, $row) = each %$canihas) {
+ my $verlist = $versions{$browser} or next;
+ my %supported = map { $_ => 1 } @$verlist;
+ $row->{$_} //= undef for @$verlist; # ensure stable keys during iteration
+ while (my ($version, $usage) = each %$row) {
+ next if defined $supported{$version};
+ $_ = paddedver($_) for $version;
+ my $next = first { paddedver($_) ge $version } @$verlist; # or next
+ $row->{$next} += $usage;
+ }
+ }
+}