diff --git a/glafp-utils/Makefile.BOOT b/glafp-utils/Makefile.BOOT
index de3ff7abdc46004814b76a5317af67ead9020cdf..7ba6e1662cefabae846ca59bb88ad5e48e036a45 100644
--- a/glafp-utils/Makefile.BOOT
+++ b/glafp-utils/Makefile.BOOT
@@ -39,7 +39,7 @@ JMAKE_CMD = $(NEWTOP)$(JMAKE) -I$(NEWTOP)$(JMAKESRC) $(BOOTSTRAPCFLAGS) -DTopDir
 Makefile:: $(JMAKE)
 
 $(JMAKE):
-	@(cd $(JMAKESRC); if [ -f Makefile ]; then \
+	@(cd $(JMAKESRC) && if [ -f Makefile ]; then \
 	echo "checking $@ in $(JMAKESRC) first..."; $(MAKE) all; else \
 	echo "bootstrapping $@ from Makefile.BOOT in $(JMAKESRC) first..."; \
 	$(MAKE) -f Makefile.BOOT BOOTSTRAPCFLAGS=$(BOOTSTRAPCFLAGS); fi; \
diff --git a/glafp-utils/msub/Jmakefile b/glafp-utils/msub/Jmakefile
index 05500980551341ab3379584becb1ba49fdcad090..52c3bb7b3e8f698cb461b1e00147b8ae40014d5d 100644
--- a/glafp-utils/msub/Jmakefile
+++ b/glafp-utils/msub/Jmakefile
@@ -4,4 +4,4 @@ InstallBinaryTarget(msub,$(INSTBINDIR))
 
 CDependTarget( $(SRCS_C) )
 
-RunStdTest(msub001,msub,-f test.makefile testfile -o1 test.out)
+RunStdTest(msub001,msub,-o1 test.out -f test.makefile testfile)
diff --git a/glafp-utils/scripts/fastmake.prl b/glafp-utils/scripts/fastmake.prl
index bcaac6b9f019680d929e669b5ba418cee206c837..730e6a41a5aa3c5806dc46e1781b61fa3e5b3fbe 100644
--- a/glafp-utils/scripts/fastmake.prl
+++ b/glafp-utils/scripts/fastmake.prl
@@ -31,8 +31,12 @@ USE AT YOUR OWN RISK: you can make a big mess with this script!
 EOUSAGE
 
 $Makefile = 'Makefile';
-$Tmpfile  = "/tmp/Makefile$$";
-chop($Arch = `uname -a`);
+if ( $ENV{'TMPDIR'} ) { # where to make tmp file names
+    $Tmpfile = $ENV{'TMPDIR'} . "/Makefile$$";
+} else {
+    $Tmpfile  = "$(TMPDIR)/Makefile$$";
+    $ENV{'TMPDIR'} = '$(TMPDIR)'; # set the env var as well
+}
 $SleazyTouch = '/usr/5bin/touch';
 $DoTouch = 0;
 $Verbose = 0;
@@ -111,11 +115,8 @@ while ( $_ ) {
 close(INF);
 close(OUTF);
 
-if ($Arch ne "sun3") {
-    $Make = 'make JMAKE=jmake LIT2PGM=lit2pgm LIT2LATEX=lit2latex LIT2TEXI=lit2texi MKDEPENDLIT=mkdependlit MAKEINFO=makeinfo POSTMAKEINFO=postmakeinfo';
-} else {
-    $Make = 'make';
-}
+$Make = 'make JMAKE=jmake LIT2PGM=lit2pgm LIT2LATEX=lit2latex LIT2TEXI=lit2texi MKDEPENDLIT=mkdependlit MAKEINFO=makeinfo POSTMAKEINFO=postmakeinfo';
+
 print STDERR "$Make $MakeFlags -f $Tmpfile $Target; rm $Tmpfile\n" if $Verbose;
 
 system( "$Make $MakeFlags -f $Tmpfile $Target; rm $Tmpfile" );
diff --git a/glafp-utils/scripts/mkdependC.prl b/glafp-utils/scripts/mkdependC.prl
index 272c0a83c5ba96e4d2de50f9c5da6a0e95df5020..cca167dc8ac313565612191e096c806e65874a0a 100644
--- a/glafp-utils/scripts/mkdependC.prl
+++ b/glafp-utils/scripts/mkdependC.prl
@@ -9,7 +9,7 @@
 $Usage  = "usage: $Pgm: not done yet\n";
 
 $Status  = 0; # just used for exit() status
-$Verbose = '';
+$Verbose = 0;
 $Dashdashes_seen = 0;
 
 $Begin_magic_str = "# DO NOT DELETE: Beginning of C dependencies\n";
@@ -27,7 +27,7 @@ if ( ! $Makefile && -f 'makefile' ) {
     $Makefile = 'makefile';
 } elsif ( ! $Makefile && -f 'Makefile') {
     $Makefile = 'Makefile';
-} else {
+} elsif ( ! $Makefile) {
     die "$Pgm: no makefile or Makefile found\n";
 }
 
@@ -73,7 +73,6 @@ while (<OMKF>) { # copy the rest through
 }
 close(NMKF);
 close(OMKF);
-chmod 0444, 'Makefile';
 exit 0;
 
 sub mangle_command_line_args {
@@ -90,7 +89,7 @@ sub mangle_command_line_args {
 
 	} elsif ($Dashdashes_seen != 1) { # not between -- ... --
 	    if ( /^-v$/ ) {
-		$Verbose	= '-v';
+		$Verbose++;
 	    } elsif ( /^-f/ ) {
 		$Makefile	= &grab_arg_arg($_);
 	    } elsif ( /^-o/ ) {
diff --git a/glafp-utils/scripts/runstdtest.prl b/glafp-utils/scripts/runstdtest.prl
index a6c964f03d962d651cc0de72882b36c0993d35b6..0c25109b2b3b4001acdde083cb1b29516e538d9d 100644
--- a/glafp-utils/scripts/runstdtest.prl
+++ b/glafp-utils/scripts/runstdtest.prl
@@ -60,6 +60,10 @@ $ToRun = "./$ToRun" if $ToRun !~ /^\//;
 arg: while ($_ = $ARGV[0]) {
     shift(@ARGV);
     
+    /^--$/	&& do { # let anything past after --
+			push(@PgmArgs, @ARGV);
+			last arg; };
+
     /^-v$/	&& do { $Verbose = 1; next arg; };
     /^-O(.*)/	&& do { push(@PgmArgs, &grab_arg_arg('-O',$1)); next arg; };
     /^-i(.*)/	&& do { $PgmStdinFile = &grab_arg_arg('-i',$1);
@@ -145,7 +149,7 @@ if ( $SpixTiming eq 'yes' ) {
 
     open(SPIXNM, "nm -n $ToRunOrig |") || die "nm -n $ToRunOrig open failed!\n";
     spix: while (<SPIXNM>) {
-	if ( / T (_FreeMallocPtr|_([A-Za-z]+)Hook|_xmalloc|_mpz_get_si)$/ ) {
+	if ( / T +(_FreeMallocPtr|_([A-Za-z]+)Hook|_xmalloc|_mpz_get_si)$/ ) {
 	    $LastSpix = $1;
 	    last spix;
 	}
@@ -320,16 +324,23 @@ sub process_stats_file {
 	#NB: nearly the same as in GHC driver's -ghc-timing stuff
 
 	open(STATS, $StatsFile) || die "Failed when opening $StatsFile\n";
-	local($tot_live) = 0; # for calculating avg residency
+
+	local($max_live)    = 0; 
+	local($tot_live)    = 0; # for calculating residency stuff
+	local($tot_samples) = 0;
 
 	while (<STATS>) {
-	    $tot_live += $1 if /^\s*\d+\s+\d+\s+\d+\.\d+\%\s+(\d+)\s+\d+\.\d+\%/;
+	    if (! /Minor/ && /^\s*\d+\s+\d+\s+(\d+)\s+\d+\.\d+\%/ ) {
+		$max_live = $1 if $max_live < $1;
+		$tot_live += $1;
+		$tot_samples += 1;
+	    }
 
 	    $BytesAlloc = $1 if /^\s*([0-9,]+) bytes allocated in the heap/;
 
-	    if ( /^\s*([0-9,]+) bytes maximum residency .* (\d+) sample/ ) {
-		$MaxResidency = $1; $ResidencySamples = $2;
-	    }
+#	    if ( /^\s*([0-9,]+) bytes maximum residency .* (\d+) sample/ ) {
+#		$MaxResidency = $1; $ResidencySamples = $2;
+#	    }
 
 	    $GCs = $1 if /^\s*([0-9,]+) garbage collections? performed/;
 
@@ -342,8 +353,10 @@ sub process_stats_file {
 	    }
 	}
 	close(STATS) || die "Failed when closing $StatsFile\n";
-	if ( defined($ResidencySamples) && $ResidencySamples > 0 ) {
-	    $AvgResidency = int ($tot_live / $ResidencySamples) ;
+	if ( $tot_samples > 0 ) {
+	    $ResidencySamples = $tot_samples;
+	    $MaxResidency = $max_live;
+	    $AvgResidency = int ($tot_live / $tot_samples) ;
 	}
 
     } elsif ( $SysSpecificTiming eq 'hbc' ) {