     else if (ch2 == 'O') base = 8;
     else if (ch2 == 'X') base = 16;
     else if (ch == '\'') return nextitem(gfun);
-    else if (ch == '.') return eval(read(gfun), NULL);
-    else error2(0, PSTR("illegal character after #"));
+    else if (ch == '.') {
+      setflag(NOESC);
+      object *result = eval(read(gfun), NULL);
+      clrflag(NOESC);
+      return result;
+    } else error2(0, PSTR("illegal character after #"));
     ch = gfun();
   }
   int isnumber = (digitvalue(ch)<base);

  // Escape
  if (tstflag(ESCAPE)) { clrflag(ESCAPE); error2(0, PSTR("Escape!"));}
  #if defined (serialmonitor)
  testescape();
  #endif
  
  if (form == NULL) return nil;

/* uLisp AVR Version 3.0a - www.ulisp.com
   David Johnson-Davies - www.technoblogy.com - 6th December 2019

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