private static void WriteGroup(BinaryWriter bw, GroupRecord gr) { WriteString(bw, "GRUP"); long pos=bw.BaseStream.Position; bw.Write(0); bw.Write(gr.GetReadonlyData()); bw.Write(gr.groupType); bw.Write(gr.dateStamp); bw.Write(gr.flags); long start=bw.BaseStream.Position; foreach(Rec r in gr.Records) { if(r is GroupRecord) WriteGroup(bw, (GroupRecord)r); else WriteRecord(bw, (Record)r); } long end=bw.BaseStream.Position; bw.BaseStream.Position=pos; bw.Write((uint)(24+(end-start))); bw.BaseStream.Position=bw.BaseStream.Length; }