あんまりフォーラムとか読まないでソース読んでたけど、要は
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/xoops/xoops2jp/html/class/criteria.php?rev=1.3&content-type=text/vnd.viewcvs-markup
> function render() {
> if (is_numeric($this->value) || in_array(strtoupper($this->operator), array('IN', 'NOT IN'))) {
> $value = $this->value;

ここで is_numeric('0') が true になるわけだから、数値型なんだなって勝手に判断されちゃって、
name = '0' が正しいのに name = 0 になっちゃうってこと?