I went for a slightly different solution, but this is not pretty... \ *: | x:take 1 | dup 3 | elastic | s:synch | join 3 / / | i:fanin | *: \ x: | y:take 4 | s: | elastic | z:fanin | join 3 / / | i: \ y: | z:
What I've done is take the first 4 data records (if any) and 'synch' that with 4 copies of the header. Since 'synch' terminates when either of them is eof, the result is the right number of headers on the primary output, and the first row on the second output. Subsequent rows then follow. I think I rather live with the extra headers for now, since that code was most elegant... Rob