Hello I agree, this goes against the main assumption people have about gensym. I was able to reproduce the bug. Here's a patch to libguile/symbol.c which fixes this behavior by incrementing the gensym counter in a loop until it creates a fresh symbol.