What makes you think there is a bug? What does this function return for
you? It always helps us to see everything you have seen.
Without taking the time to try it on my system, I'd recommend explictly
converting your index to text:
num_var := num_var || ',' || i::text;
RobR