That would be great if indeed I had control over the csv file. But I don't. End L-users are writing/updating the file and sometimes I get empty lines or lines joined by ^M.. In fact, for all intensive purposes, you can ignore the fact that I am trying to parse comma separated values because the true problem lies in defining the individual lines themselves. The csv stuff I already have is golden.