   if (args != NULL) error2(fname, PSTR("has too many arguments"));
   if (trace) { pserial(')'); pln(pserial); }
   // Do an implicit progn
+  if (tc) push(nil, *env);
   return tf_progn(function, *env);
 }
 

/* uLisp AVR Version 2.7 - www.ulisp.com
   David Johnson-Davies - www.technoblogy.com - 20th May 2019

   Licensed under the MIT license: https://opensource.org/licenses/MIT
*/

  function = cdr(function);
  // Dropframe
  if (tc) {
    if (*env != NULL && car(*env) == NULL) {
      pop(*env);
      while (*env != NULL && car(*env) != NULL) pop(*env);
    } else push(nil, *env);
  }
  // Push state
  while (state != NULL) {
    object *pair = first(state);
