diff --git a/tests.aarbology.sh b/tests.aarbology.sh
index 73c22ee1fc1ca179fe0b9570add67d159f277605..7da6a29fb3b5b99cd26c50e4604d8f90a78eea9e 100755
--- a/tests.aarbology.sh
+++ b/tests.aarbology.sh
@@ -16,12 +16,12 @@ RAND_ALPHABET=2
 EXECUTABLES="arand2 atrim2 adeterminize2 anormalize2 "
 TESTS_DIR="`pwd`/examples2/tree"
 
-RES_GOOD=0
-RES_FAIL=0
-RES_TIME=0
-RES_SEGV=0
-RES_UNKN=0
-MATCHES=0
+RES_GOOD=
+RES_FAIL=
+RES_TIME=
+RES_SEGV=
+RES_UNKN=
+MATCHES=
 
 
 # ----------------------------
@@ -97,7 +97,7 @@ function runTest2 {
 		registerResult 1
 		return 1
 	else
-		MATCHES=$(($MATCHES + $OUT2))
+		echo -n "+$OUT2" >> $MATCHES
 		registerResult 0
 		return 0
 	fi
@@ -107,40 +107,62 @@ function registerResult {
 	case $1 in
 		0)
 			echo -n "."
-			((RES_GOOD++))
+			echo -n "+1" >> $RES_GOOD
 			;;
 		1)
 			echo -n "x"
-			((RES_FAIL++))
+			echo -n "+1" >> $RES_FAIL
 			;;
 		2)
 			echo -n "T"
-			((RES_TIME++))
+			echo -n "+1" >> $RES_TIME
 			;;
 		3)
 			echo -n "E"
-			((RES_SEGV++))
+			echo -n "+1" >> $RES_SEGV
 			;;
 		*)
 			echo -n "?"
-			((RES_UNKN++))
+			echo -n "+1" >> $RES_UNKN
 			;;
 	esac
 }
 
+function initResults {
+	RES_GOOD=$(mktemp)
+	echo -n "0" > $RES_GOOD
+	RES_FAIL=$(mktemp)
+	echo -n "0" > $RES_FAIL
+	RES_TIME=$(mktemp)
+	echo -n "0" > $RES_TIME
+	RES_SEGV=$(mktemp)
+	echo -n "0" > $RES_SEGV
+	RES_UNKN=$(mktemp)
+	echo -n "0" > $RES_UNKN
+	MATCHES=$(mktemp)
+	echo -n "0" > $MATCHES
+}
+
 function clearResults {
-	RES_GOOD=0
-	RES_FAIL=0
-	RES_TIME=0
-	RES_SEGV=0
-	RES_UNKN=0
-	MATCHES=0
+	rm $RES_GOOD
+	rm $RES_FAIL
+	rm $RES_TIME
+	rm $RES_SEGV
+	rm $RES_UNKN
+	rm $MATCHES
 }
 
 function outputResults {
+	echo "" >> $RES_GOOD
+	echo "" >> $RES_FAIL
+	echo "" >> $RES_TIME
+	echo "" >> $RES_SEGV
+	echo "" >> $RES_UNKN
+	echo "" >> $MATCHES
+
 	# summary
 	echo -ne "\n\t"
-	echo "RES: GOOD:" $RES_GOOD ", FAIL:" $RES_FAIL ", TIME:" $RES_TIME ", SEGV:" $RES_SEGV, "UNKN:" $RES_UNKN, "MATCHES:" $MATCHES
+	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN), "MATCHES:" $(bc < $MATCHES)
 	echo ""
 }
 
@@ -149,7 +171,7 @@ function runTestSubtree {
 	echo $1
 	echo -ne "\t"
 
-	clearResults
+	initResults
 
 	# predefined tests first
 	for SUBJECT_FILE in `ls $TESTS_DIR/aarbology.test*.subject.xml`; do
@@ -186,6 +208,7 @@ function runTestSubtree {
 	wait
 
 	outputResults
+	clearResults
 }
 
 # $1 - aconversions2 sequence
@@ -193,7 +216,7 @@ function runTestPattern {
 	echo $1
 	echo -ne "\t"
 
-	clearResults
+	initResults
 
 	# predefined tests first
 	for SUBJECT_FILE in `ls $TESTS_DIR/aarbology.test*.subject.xml`; do
@@ -230,6 +253,7 @@ function runTestPattern {
 	wait
 
 	outputResults
+	clearResults
 }
 
 # $1 - aconversions2 sequence
@@ -237,7 +261,7 @@ function runTestPatternEnds {
 	echo $1
 	echo -ne "\t"
 
-	clearResults
+	initResults
 
 	# predefined tests first
 	for SUBJECT_FILE in `ls $TESTS_DIR/aarbology.test*.subject.xml`; do
@@ -274,6 +298,7 @@ function runTestPatternEnds {
 	wait
 
 	outputResults
+	clearResults
 }
 
 runTestPatternEnds "Exact Pattern Matching Automaton (PrefixRanked)" "./aarbology2 -a exactPatternMatchingAutomaton -p <(./acast2 -t PrefixRankedPattern -i <(./alphabetManip2 -o add -i \"\$PATTERN_FILE\" -a <( ./alphabetManip2 -o get -i \"\$SUBJECT_FILE\" ) ) ) | ./adeterminize2 | ./arun2 -t occurrences -a - -i <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" | ./acast2 -t LinearString ) | ./astat2 -p size --set"
diff --git a/tests.aconversion.sh b/tests.aconversion.sh
index 49409017fd2dc08b90f73a103cedad7b7fc6a6ad..a65955931745d2328d06fa7063c15055322c3157 100755
--- a/tests.aconversion.sh
+++ b/tests.aconversion.sh
@@ -14,11 +14,11 @@ RAND_ALPHABET=4
 EXECUTABLES="arand2 aepsilon2 atrim2 adeterminize2 aminimize2 anormalize2 acompare2 aconversions2"
 TESTS_DIR="`pwd`/examples2/automaton"
 
-RES_GOOD=0
-RES_FAIL=0
-RES_TIME=0
-RES_SEGV=0
-RES_UNKN=0
+RES_GOOD=
+RES_FAIL=
+RES_TIME=
+RES_SEGV=
+RES_UNKN=
 
 
 # ----------------------------
@@ -88,39 +88,58 @@ function registerResult {
 	case $1 in
 		0)
 			echo -n "."
-			((RES_GOOD++))
+			echo -n "+1" >> $RES_GOOD
 			;;
 		1)
 			echo -n "x"
-			((RES_FAIL++))
+			echo -n "+1" >> $RES_FAIL
 			;;
 		2)
 			echo -n "T"
-			((RES_TIME++))
+			echo -n "+1" >> $RES_TIME
 			;;
 		3)
 			echo -n "E"
-			((RES_SEGV++))
+			echo -n "+1" >> $RES_SEGV
 			;;
 		*)
 			echo -n "?"
-			((RES_UNKN++))
+			echo -n "+1" >> $RES_UNKN
 			;;
 	esac
 }
 
+function initResults {
+	RES_GOOD=$(mktemp)
+	echo -n "0" > $RES_GOOD
+	RES_FAIL=$(mktemp)
+	echo -n "0" > $RES_FAIL
+	RES_TIME=$(mktemp)
+	echo -n "0" > $RES_TIME
+	RES_SEGV=$(mktemp)
+	echo -n "0" > $RES_SEGV
+	RES_UNKN=$(mktemp)
+	echo -n "0" > $RES_UNKN
+}
+
 function clearResults {
-	RES_GOOD=0
-	RES_FAIL=0
-	RES_TIME=0
-	RES_SEGV=0
-	RES_UNKN=0
+	rm $RES_GOOD
+	rm $RES_FAIL
+	rm $RES_TIME
+	rm $RES_SEGV
+	rm $RES_UNKN
 }
 
 function outputResults {
+	echo "" >> $RES_GOOD
+	echo "" >> $RES_FAIL
+	echo "" >> $RES_TIME
+	echo "" >> $RES_SEGV
+	echo "" >> $RES_UNKN
+
 	# summary
 	echo -ne "\n\t"
-	echo "RES: GOOD:" $RES_GOOD ", FAIL:" $RES_FAIL ", TIME:" $RES_TIME ", SEGV:" $RES_SEGV, "UNKN:" $RES_UNKN
+	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN)
 	echo ""
 }
 
@@ -129,7 +148,7 @@ function runTest {
 	echo $1
 	echo -ne "\t"
 
-	clearResults
+	initResults
 
 	# predefined tests first
 	for FILE in `ls $TESTS_DIR/aconversion.test*`; do
@@ -155,6 +174,7 @@ function runTest {
 	wait
 
 	outputResults
+	clearResults
 }
 
 # FA -> RG -> FA
diff --git a/tests.adeterminize.sh b/tests.adeterminize.sh
index 6fe0e0e05ca2d6b3283a0ee7bf2a0b55fa4091c7..99e448f6aa70da3394f89f205b5975d9c0bb37ca 100755
--- a/tests.adeterminize.sh
+++ b/tests.adeterminize.sh
@@ -9,11 +9,11 @@ LOGFILE="log_tests.txt"
 EXECUTABLES="aepsilon2 atrim2 adeterminize2 aminimize2 anormalize2 acompare2"
 TESTS_DIR="`pwd`/examples2/automaton"
 
-RES_GOOD=0
-RES_FAIL=0
-RES_TIME=0
-RES_SEGV=0
-RES_UNKN=0
+RES_GOOD=
+RES_FAIL=
+RES_TIME=
+RES_SEGV=
+RES_UNKN=
 
 
 # ----------------------------
@@ -71,39 +71,58 @@ function registerResult {
 	case $1 in
 		0)
 			echo -n "."
-			((RES_GOOD++))
+			echo -n "+1" >> $RES_GOOD
 			;;
 		1)
 			echo -n "x"
-			((RES_FAIL++))
+			echo -n "+1" >> $RES_FAIL
 			;;
 		2)
 			echo -n "T"
-			((RES_TIME++))
+			echo -n "+1" >> $RES_TIME
 			;;
 		3)
 			echo -n "E"
-			((RES_SEGV++))
+			echo -n "+1" >> $RES_SEGV
 			;;
 		*)
 			echo -n "?"
-			((RES_UNKN++))
+			echo -n "+1" >> $RES_UNKN
 			;;
 	esac
 }
 
+function initResults {
+	RES_GOOD=$(mktemp)
+	echo -n "0" > $RES_GOOD
+	RES_FAIL=$(mktemp)
+	echo -n "0" > $RES_FAIL
+	RES_TIME=$(mktemp)
+	echo -n "0" > $RES_TIME
+	RES_SEGV=$(mktemp)
+	echo -n "0" > $RES_SEGV
+	RES_UNKN=$(mktemp)
+	echo -n "0" > $RES_UNKN
+}
+
 function clearResults {
-	RES_GOOD=0
-	RES_FAIL=0
-	RES_TIME=0
-	RES_SEGV=0
-	RES_UNKN=0
+	rm $RES_GOOD
+	rm $RES_FAIL
+	rm $RES_TIME
+	rm $RES_SEGV
+	rm $RES_UNKN
 }
 
 function outputResults {
+	echo "" >> $RES_GOOD
+	echo "" >> $RES_FAIL
+	echo "" >> $RES_TIME
+	echo "" >> $RES_SEGV
+	echo "" >> $RES_UNKN
+
 	# summary
 	echo -ne "\n\t"
-	echo "RES: GOOD:" $RES_GOOD ", FAIL:" $RES_FAIL ", TIME:" $RES_TIME ", SEGV:" $RES_SEGV, "UNKN:" $RES_UNKN
+	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN)
 	echo ""
 }
 
@@ -112,7 +131,7 @@ function runTest {
 	echo $1 \($2\)
 	echo -ne "\t"
 
-	clearResults
+	initResults
 
 	# predefined tests first
 	for FILE in `ls $TESTS_DIR/$1*.xml | grep -v DET`; do
@@ -124,6 +143,7 @@ function runTest {
 	done
 
 	outputResults
+	clearResults
 }
 
 runTest "NFSM" "./adeterminize2 | ./atrim2"
diff --git a/tests.anormalize.sh b/tests.anormalize.sh
index d4b50a17785dc16075cf1f01e0a76b20eb433653..4c4fda0e8d2a56364fac9466c2bf242253092761 100755
--- a/tests.anormalize.sh
+++ b/tests.anormalize.sh
@@ -15,11 +15,11 @@ STRING_LENGHTS=6
 EXECUTABLES="arand2 atrim2 anormalize2 agenerate2 aepsilon2"
 TESTS_DIR="`pwd`/examples2/grammar"
 
-RES_GOOD=0
-RES_FAIL=0
-RES_TIME=0
-RES_SEGV=0
-RES_UNKN=0
+RES_GOOD=
+RES_FAIL=
+RES_TIME=
+RES_SEGV=
+RES_UNKN=
 
 
 # ----------------------------
@@ -89,39 +89,58 @@ function registerResult {
 	case $1 in
 		0)
 			echo -n "."
-			((RES_GOOD++))
+			echo -n "+1" >> $RES_GOOD
 			;;
 		1)
 			echo -n "x"
-			((RES_FAIL++))
+			echo -n "+1" >> $RES_FAIL
 			;;
 		2)
 			echo -n "T"
-			((RES_TIME++))
+			echo -n "+1" >> $RES_TIME
 			;;
 		3)
 			echo -n "E"
-			((RES_SEGV++))
+			echo -n "+1" >> $RES_SEGV
 			;;
 		*)
 			echo -n "?"
-			((RES_UNKN++))
+			echo -n "+1" >> $RES_UNKN
 			;;
 	esac
 }
 
+function initResults {
+	RES_GOOD=$(mktemp)
+	echo -n "0" > $RES_GOOD
+	RES_FAIL=$(mktemp)
+	echo -n "0" > $RES_FAIL
+	RES_TIME=$(mktemp)
+	echo -n "0" > $RES_TIME
+	RES_SEGV=$(mktemp)
+	echo -n "0" > $RES_SEGV
+	RES_UNKN=$(mktemp)
+	echo -n "0" > $RES_UNKN
+}
+
 function clearResults {
-	RES_GOOD=0
-	RES_FAIL=0
-	RES_TIME=0
-	RES_SEGV=0
-	RES_UNKN=0
+	rm $RES_GOOD
+	rm $RES_FAIL
+	rm $RES_TIME
+	rm $RES_SEGV
+	rm $RES_UNKN
 }
 
 function outputResults {
+	echo "" >> $RES_GOOD
+	echo "" >> $RES_FAIL
+	echo "" >> $RES_TIME
+	echo "" >> $RES_SEGV
+	echo "" >> $RES_UNKN
+
 	# summary
 	echo -ne "\n\t"
-	echo "RES: GOOD:" $RES_GOOD ", FAIL:" $RES_FAIL ", TIME:" $RES_TIME ", SEGV:" $RES_SEGV, "UNKN:" $RES_UNKN
+	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN)
 	echo ""
 }
 
@@ -130,7 +149,7 @@ function runTest {
 	echo $1
 	echo -ne "\t"
 
-	clearResults
+	initResults
 
 	# predefined tests first
 	for FILE in `ls $TESTS_DIR/anormalization.test*`; do
@@ -156,6 +175,7 @@ function runTest {
 	wait
 
 	outputResults
+	clearResults
 }
 
 # Chomsky normal form and Greibach normal form
diff --git a/tests.astringology.sh b/tests.astringology.sh
index 4b9749bfce2b914ae4e6e26f14d8032dd9fa7392..59d496745b94e4d22db1d52f1f3bbd492251eec9 100755
--- a/tests.astringology.sh
+++ b/tests.astringology.sh
@@ -14,12 +14,12 @@ RAND_ALPHABET=4
 EXECUTABLES="arand2 atrim2 adeterminize2 anormalize2 "
 TESTS_DIR="`pwd`/examples2/string"
 
-RES_GOOD=0
-RES_FAIL=0
-RES_TIME=0
-RES_SEGV=0
-RES_UNKN=0
-MATCHES=0
+RES_GOOD=
+RES_FAIL=
+RES_TIME=
+RES_SEGV=
+RES_UNKN=
+MATCHES=
 
 
 # ----------------------------
@@ -91,7 +91,7 @@ function runTest2 {
 		registerResult 1
 		return 1
 	else
-		MATCHES=$(($MATCHES + $OUT2))
+		echo -n "+$OUT2" >> $MATCHES
 		registerResult 0
 		return 0
 	fi
@@ -101,40 +101,62 @@ function registerResult {
 	case $1 in
 		0)
 			echo -n "."
-			((RES_GOOD++))
+			echo -n "+1" >> $RES_GOOD
 			;;
 		1)
 			echo -n "x"
-			((RES_FAIL++))
+			echo -n "+1" >> $RES_FAIL
 			;;
 		2)
 			echo -n "T"
-			((RES_TIME++))
+			echo -n "+1" >> $RES_TIME
 			;;
 		3)
 			echo -n "E"
-			((RES_SEGV++))
+			echo -n "+1" >> $RES_SEGV
 			;;
 		*)
 			echo -n "?"
-			((RES_UNKN++))
+			echo -n "+1" >> $RES_UNKN
 			;;
 	esac
 }
 
+function initResults {
+	RES_GOOD=$(mktemp)
+	echo -n "0" > $RES_GOOD
+	RES_FAIL=$(mktemp)
+	echo -n "0" > $RES_FAIL
+	RES_TIME=$(mktemp)
+	echo -n "0" > $RES_TIME
+	RES_SEGV=$(mktemp)
+	echo -n "0" > $RES_SEGV
+	RES_UNKN=$(mktemp)
+	echo -n "0" > $RES_UNKN
+	MATCHES=$(mktemp)
+	echo -n "0" > $MATCHES
+}
+
 function clearResults {
-	RES_GOOD=0
-	RES_FAIL=0
-	RES_TIME=0
-	RES_SEGV=0
-	RES_UNKN=0
-	MATCHES=0
+	rm $RES_GOOD
+	rm $RES_FAIL
+	rm $RES_TIME
+	rm $RES_SEGV
+	rm $RES_UNKN
+	rm $MATCHES
 }
 
 function outputResults {
+	echo "" >> $RES_GOOD
+	echo "" >> $RES_FAIL
+	echo "" >> $RES_TIME
+	echo "" >> $RES_SEGV
+	echo "" >> $RES_UNKN
+	echo "" >> $MATCHES
+
 	# summary
 	echo -ne "\n\t"
-	echo "RES: GOOD:" $RES_GOOD ", FAIL:" $RES_FAIL ", TIME:" $RES_TIME ", SEGV:" $RES_SEGV, "UNKN:" $RES_UNKN, "MATCHES:" $MATCHES
+	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN), "MATCHES:" $(bc < $MATCHES)
 	echo ""
 }
 
@@ -143,7 +165,7 @@ function runTest {
 	echo $1
 	echo -ne "\t"
 
-	clearResults
+	initResults
 
 	# predefined tests first
 	for SUBJECT_FILE in `ls $TESTS_DIR/astringology.test*.subject.xml`; do
@@ -180,6 +202,7 @@ function runTest {
 	wait
 
 	outputResults
+	clearResults
 }
 
 runTest "Exact Boyer Moore Horspool" "./astringology2 -a boyerMooreHorspool -s \"\$SUBJECT_FILE\" -p <(./alphabetManip2 -o add -i \"\$PATTERN_FILE\" -a <(./alphabetManip2 -o get -i \"\$SUBJECT_FILE\")) | ./astat2 -p size --set"
diff --git a/tests.examples.sh b/tests.examples.sh
index 4f6dc10747fdfa2ba20f3e7055e365ee9bfce4a3..d41ee32cd30b9fb495d97fd1a72e5500fbf38b4c 100755
--- a/tests.examples.sh
+++ b/tests.examples.sh
@@ -9,11 +9,11 @@ LOGFILE="log_tests.txt"
 EXECUTABLES="aecho2"
 TESTS_DIR="`pwd`/examples2"
 
-RES_GOOD=0
-RES_FAIL=0
-RES_TIME=0
-RES_SEGV=0
-RES_UNKN=0
+RES_GOOD=
+RES_FAIL=
+RES_TIME=
+RES_SEGV=
+RES_UNKN=
 
 
 # ----------------------------
@@ -69,39 +69,58 @@ function registerResult {
 	case $1 in
 		0)
 			echo -n "."
-			((RES_GOOD++))
+			echo -n "+1" >> $RES_GOOD
 			;;
 		1)
 			echo -n "x"
-			((RES_FAIL++))
+			echo -n "+1" >> $RES_FAIL
 			;;
 		2)
 			echo -n "T"
-			((RES_TIME++))
+			echo -n "+1" >> $RES_TIME
 			;;
 		3)
 			echo -n "E"
-			((RES_SEGV++))
+			echo -n "+1" >> $RES_SEGV
 			;;
 		*)
 			echo -n "?"
-			((RES_UNKN++))
+			echo -n "+1" >> $RES_UNKN
 			;;
 	esac
 }
 
+function initResults {
+	RES_GOOD=$(mktemp)
+	echo -n "0" > $RES_GOOD
+	RES_FAIL=$(mktemp)
+	echo -n "0" > $RES_FAIL
+	RES_TIME=$(mktemp)
+	echo -n "0" > $RES_TIME
+	RES_SEGV=$(mktemp)
+	echo -n "0" > $RES_SEGV
+	RES_UNKN=$(mktemp)
+	echo -n "0" > $RES_UNKN
+}
+
 function clearResults {
-	RES_GOOD=0
-	RES_FAIL=0
-	RES_TIME=0
-	RES_SEGV=0
-	RES_UNKN=0
+	rm $RES_GOOD
+	rm $RES_FAIL
+	rm $RES_TIME
+	rm $RES_SEGV
+	rm $RES_UNKN
 }
 
 function outputResults {
+	echo "" >> $RES_GOOD
+	echo "" >> $RES_FAIL
+	echo "" >> $RES_TIME
+	echo "" >> $RES_SEGV
+	echo "" >> $RES_UNKN
+
 	# summary
 	echo -ne "\n\t"
-	echo "RES: GOOD:" $RES_GOOD ", FAIL:" $RES_FAIL ", TIME:" $RES_TIME ", SEGV:" $RES_SEGV, "UNKN:" $RES_UNKN
+	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN)
 	echo ""
 }
 
@@ -110,7 +129,7 @@ function runTest {
 	echo $1 \(./aecho2\)
 	echo -ne "\t"
 
-	clearResults
+	initResults
 
 	# predefined tests first
 	for FILE in `ls $TESTS_DIR/$1/*.xml`; do
@@ -119,6 +138,7 @@ function runTest {
 	done
 
 	outputResults
+	clearResults
 }
 
 runTest "automaton"