diff --git a/src/lisp/s-expr.pla b/src/lisp/s-expr.pla
index 0192a5c..cf7ab08 100644
--- a/src/lisp/s-expr.pla
+++ b/src/lisp/s-expr.pla
@@ -105,18 +105,23 @@ def sweep_expr(expr)#0
 end
 
 def sweep_used#0
-  var symptr
+  var symptr, i, memptr, size
 
   sweep_expr(assoc_list)
   sweep_expr(build_list)
   sweep_expr(eval_last)
   symptr = sym_list
   while symptr
-    if symptr=>lambda
-      sweep_expr(symptr=>lambda)
-    fin
     if symptr=>apval
       sweep_expr(symptr=>apval)
+    elsif symptr=>lambda
+      sweep_expr(symptr=>lambda)
+    elsif symptr=>array
+      memptr = symptr=>array=>arraymem
+      size   = symptr=>array=>arraysize -1
+      for i = 0 to size
+        sweep_expr(memptr=>[i])
+      next
     fin
     symptr = symptr=>link
   loop
@@ -257,7 +262,7 @@ def new_array(dim0, dim1, dim2, dim3)
   aptr=>offset[1]    = ofst1
   aptr=>offset[2]    = ofst2
   aptr=>offset[3]    = ofst3
-  aptr=>arraysize    = size
+  aptr=>arraysize    = size/2
   aptr=>arraymem     = memptr
   return aptr
 end