This isn't allowed: % typeset -F ARGC typeset: ARGC: can't change type of a special parameter But this is: % typeset -Z3 '#' % set -- Hello, my name is Bond, James Bond % print $# 007 % typeset -u -R40 ZSH_EVAL_CONTEXT % print $ZSH_EVAL_CONTEXT TOPLEVEL % Most readonly-specials are arrays or hashes and ignore these additional flags, but is this really meant to work for the scalars?