+ } elsif ( $rating_method eq 'single_price' ) {
+
+ # a little false laziness w/below
+
+ my $granularity = length($self->option('sec_granularity'))
+ ? $self->option('sec_granularity')
+ : 60;
+
+ # length($cdr->billsec) ? $cdr->billsec : $cdr->duration;
+ my $seconds = $use_duration ? $cdr->duration : $cdr->billsec;
+
+ $seconds += $granularity - ( $seconds % $granularity )
+ if $seconds # don't granular-ize 0 billsec calls (bills them)
+ && $granularity; # 0 is per call
+ my $minutes = $seconds / 60; # sprintf("%.1f",
+ #$minutes =~ s/\.0$// if $granularity == 60;
+
+ # XXX config?
+ #$charge = sprintf('%.2f', ( $self->option('min_charge') * $minutes )
+ #+ 0.00000001 ); #so 1.005 rounds to 1.01
+ $charge = sprintf('%.4f', ( $self->option('min_charge') * $minutes )
+ + 0.0000000001 ); #so 1.00005 rounds to 1.0001
+
+ $charges += $charge;
+
+ @call_details = ($cdr->downstream_csv( 'format' => $output_format,
+ 'charge' => $charge,
+ )
+ );
+