(substring=? "" "" 0 0 0) results in a range error too. Sorry I forgot to update this ticket the other day. I believe the problem is in the lines (##sys#check-range start1 0 (##sys#size s1) 'substring=?), when the string is empty -- it amounts to (##sys#check-range 0 0 0 'substring=?). I can't tell what the obvious fix is, if there is one. Return #t if one of the strings is empty?