An yes, the bond lines are missing one field too. Lines 631-635 should be:
snprintf(buff, BUFF_SIZE, "%3d%3d%3d%3d%3d%3d%3d",
bond->GetBeginAtomIdx(),
bond->GetEndAtomIdx(),
bond->GetBO(),
stereo,0,0,0);.
The v2000 atom lines are incomplete according to the CT Files spec as of 2007. They are missing 7 trailing fields which causes trouble with some programs, e.g. Dingo from Indigo.
Lines 606-611 in mdlformat.cpp should be:
snprintf(buff, BUFF_SIZE, "%10.4f%10.4f%10.4f %-3s%2d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d",
atom->GetX(),
atom->GetY(),