Since no one seemed to be interested in the NUL-separator bugs I've taken a look at the code myself and I've managed to locate the bugs. The function tiedarrsetfn() does not convert characters for which imeta() is true into separator strings properly. This means that the bug is not limited to NUL-characters but affects all characters for which imeta() is true (e.g. 0x83). There are also 2 bugs in zjoin(): 1. zjoin() doesn't put the NUL-terminator in the right place when delim is a meta-character. 2. zjoin() refuses to add 0-delimiters (although it does count them when computing the length). This behaviour does not seem to be used anywhere in zsh code AFAICS and even if it were, that would be a bug in the respective call. The attached patch fixes both problems and adds 2 regression tests to B02typeset.ztst (both tests are necessary, since 0 and 0x83 are treated differently in some places, so that one case could regress independent of the other). MSB