A dark, under-specified corner of R5RS: VCELL を使う限り 3 を出すのは無理だな…あるいは farsymbol が 2 cell 使うか。

気色悪い事したら 3 出せるね。

(define sym val)

Top-level define に渡される symbol についてる wrapper は高々 1 個 (のはず) なので、

(when (farsym? sym)
  (set-wrapped-symbol!
   sym
   (copy-symbol (farsym-wrapped-symbol sym)))
  (set-env-depth!
   sym invalid-depth))

として、unwrap-syntax のときに invalid-depth を検出して (intern (symbol->string 'sym)) したら多分動く。…意味ないからやりたくないけど。

Source 読んだ人しかわからん話でスマソ。

追記: 結局 4 出しますた。