Hi,
I think your
package PostScript::Graph::Paper;
$VERSION = '0.08';
could work far better with log(abs()) in init_scale of $lhi10...
...
#print "$axis spreads = [", join(", ", @spread), "], depth=$sc->{ldepth}\n";
$sc->{markmul} = ($#factor >= 0) ? ($sc->{markmax} - $sc->{markmin})/($#factor +
1) : 0;
## calculate any SI adjustment to labels
my $lhi10 = $sc->{lhi} != 0 ? log(abs($sc->{lhi}))/log(10) : 0;
my $si10 = $sc->{si} ? ($sc->{si} * int($lhi10/$sc->{si})) : 0;
my $si = 10 ** $si10;
if ($si != 1) {
$sc->{title} = "" unless (defined $sc->{title});
...
Cheers,
Christian Montanari.