diff --git a/src/pl/tcl/test/runtest b/src/pl/tcl/test/runtest
index d1cfb3308263c643cce2518db3c5ca8860ce4c02..c98402f0abd6b017f2312409cff75e9208dbd400 100755
--- a/src/pl/tcl/test/runtest
+++ b/src/pl/tcl/test/runtest
@@ -21,7 +21,7 @@ psql -q -n -e $DBNAME <test_queries.sql > test.out 2>&1
 if diff test.expected test.out >/dev/null 2>&1 ; then
     echo "    Tests passed O.K."
 else
-    echo "    Tests faild - look at diffs between"
+    echo "    Tests failed - look at diffs between"
     echo "    test.expected and test.out"
 fi
 
diff --git a/src/pl/tcl/test/test.expected b/src/pl/tcl/test/test.expected
index 351643ade41cbf5fb2081a39b8c92700a44e97c7..d7037a1848615cdba32ea0c9b2d7a0e4311adafb 100644
--- a/src/pl/tcl/test/test.expected
+++ b/src/pl/tcl/test/test.expected
@@ -133,7 +133,11 @@ select tcl_sum(key1) from T_pkey2;
 (1 row)
 
 select tcl_avg(key1) from T_pkey1 where key1 = 99;
-ERROR:  pltcl: divide by zero
+ tcl_avg 
+---------
+        
+(1 row)
+
 select tcl_sum(key1) from T_pkey1 where key1 = 99;
  tcl_sum 
 ---------
diff --git a/src/pl/tcl/test/test_setup.sql b/src/pl/tcl/test/test_setup.sql
index 7faabc129613df677e82c021aa5eb9c1d17c3f4b..918e2212696725aa5300e1b56f7b50e20be7d304 100644
--- a/src/pl/tcl/test/test_setup.sql
+++ b/src/pl/tcl/test/test_setup.sql
@@ -389,22 +389,23 @@ create function tcl_int4add(int4,int4) returns int4 as '
 -- We use split(n) as a quick-and-dirty way of parsing the input array
 -- value, which comes in as a string like '{1,2}'.  There are better ways...
 
-create function tcl_int4_accum(_int4,int4) returns _int4 as '
+create function tcl_int4_accum(int4[], int4) returns int4[] as '
     set state [split $1 "{,}"]
     set newsum [expr {[lindex $state 1] + $2}]
     set newcnt [expr {[lindex $state 2] + 1}]
     return "{$newsum,$newcnt}"
 ' language 'pltcl';
 
-create function tcl_int4_avg(_int4) returns int4 as '
+create function tcl_int4_avg(int4[]) returns int4 as '
     set state [split $1 "{,}"]
+    if {[lindex $state 2] == 0} { return_null }
     return [expr {[lindex $state 1] / [lindex $state 2]}]
 ' language 'pltcl';
 
 create aggregate tcl_avg (
 		sfunc = tcl_int4_accum,
 		basetype = int4,
-		stype = _int4,
+		stype = int4[],
 		finalfunc = tcl_int4_avg,
 		initcond = '{0,0}'
 	);
@@ -413,7 +414,7 @@ create aggregate tcl_sum (
 		sfunc = tcl_int4add,
 		basetype = int4,
 		stype = int4,
-		initcond1 = '0'
+		initcond1 = 0
 	);
 
 create function tcl_int4lt(int4,int4) returns bool as '