+
+ my $r;
+ my %qrg;
+ foreach $r (@$cand) {
+ next unless ref $r;
+ ++$qrg{$r->[RQrg]};
+ }
+ # determine the most likely qrg and then set it
+ my @deviant;
+ my $c = 0;
+ my $mv = 0;
+ my $qrg;
+ while (my ($k, $votes) = each %qrg) {
+ $qrg = $k, $mv = $votes if $votes > $mv;
+ ++$c;
+ }
+ # spit out the deviants
+ if ($c > 1) {
+ foreach $r (@$cand) {
+ next unless ref $r;
+ my $diff = nearest(.1, $qrg - $r->[RQrg]);
+ push @deviant, sprintf("$r->[ROrigin]:%+.1f", $diff) if $diff != 0;
+ $r->[RSpotData]->[SQrg] = $qrg; # set all the QRGs to the agreed value
+ }
+ }
+
+ $qrg = sprintf "%.1f", $qrg;
+ $r = $cand->[CData];
+ $r->[RQrg] = $qrg;