   object *pair = findvalue(var, env);
   int result = integer(eval(var, env));
   int temp = 1;
-  if (cdr(args) != NULL) temp = integer(eval(second(args), env));
+  args = cdr(args);
+  if (args != NULL) temp = integer(eval(first(args), env));
   #if defined(checkoverflow)
   if (temp < 1) { if (32767 + temp < result) error(F("'decf' arithmetic overflow")); }
   else { if (-32768 + temp > result) error(F("'decf' arithmetic overflow")); }

  return obj;
}

object *fn_gc (object *obj, object *env) {
  unsigned long start = micros();
  int initial = freespace;

      TCCR2A = 1<<COM2A0 | 0<<COM2B0 | 2<<WGM20; // Toggle OC2A on match
    } else error(F("'note' pin not supported"));
    int prescaler = 0;
    if (cddr(args) != NULL) prescaler = integer(third(args));
    prescaler = 9 - prescaler - note/12;
    if (prescaler<3 || prescaler>6) error(F("'note' octave out of range"));
    OCR2A = pgm_read_byte(&scale[note%12]);
