I got it working with an old version of guile but have problem with newest stable-2.0 I'll expand a macro #'(pk (syntax z)) and when evaluating this I get (#(syntax-object z ((m~TFEL$Gaj1u5PPt2i@IPCm top) #(ribcage () () ()) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(#{ g~TFEL$Gaj1u5PPt2i@IPCp}# #{ g~TFEL$Gaj1u5PPt2i@IPCq}#) #((m~TFEL$Gaj1u5PPt2i@IPCr top) (m~TFEL$Gaj1u5PPt2i@IPCr top)) #("o4" "o5")) #(ribcage () () ()) shift #(ribcage () () ()) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(z) #((m~TFEL$Gaj1u5PPt2i@IPCX top)) #("o2")) #(ribcage () () ()) #(ribcage () () ()) #(ribcage () () ()) #(ribcage () () ()) #(ribcage () () ()) #(ribcage () () ())) (hygiene guile-user))) There is a binding z that comes from a with-syntax but it does not flow through!! Is it because of the shift in the middle? Anyway I managed to make it work with earlier versions of psyntax but have hard time to make it works with current 2.0. Again the main issue is that guile psyntax does not support the #s notation in racket and hence the hacks on the syntax objects. (see the series of emails that I send previous week) /Stefan