public static void MergeRuns(DiskFunctionality df, string in1, string in2, string outTape)  //merge 1 series from each input
        {
            int previous1Record = -1, record1 = df.ReadRecord(in1);
            int previous2Record = -1, record2 = df.ReadRecord(in2);

            while (true)
            {
                if (record1 != -1 && record2 != -1)
                {
                    if (Compare(record1, record2))
                    {
                        if (Compare(previous1Record, record1))
                        {
                            df.SaveRecord(record1, outTape);
                            previous1Record = record1;
                            record1         = df.ReadRecord(in1);
                        }
                        else
                        {
                            df.ReturnRecord(in1);
                            while (true)
                            {
                                if (Compare(previous2Record, record2))
                                {
                                    df.SaveRecord(record2, outTape);
                                    previous2Record = record2;
                                    record2         = df.ReadRecord(in2);
                                    if (record2 == -1)
                                    {
                                        return;
                                    }
                                }
                                else
                                {
                                    df.ReturnRecord(in2);
                                    return;
                                }
                            }
                        }
                    }
                    else
                    {
                        if (Compare(previous2Record, record2))
                        {
                            df.SaveRecord(record2, outTape);
                            previous2Record = record2;
                            record2         = df.ReadRecord(in2);
                        }
                        else
                        {
                            df.ReturnRecord(in2);
                            while (true)
                            {
                                if (Compare(previous1Record, record1))
                                {
                                    df.SaveRecord(record1, outTape);
                                    previous1Record = record1;
                                    record1         = df.ReadRecord(in1);
                                    if (record1 == -1)
                                    {
                                        return;
                                    }
                                }
                                else
                                {
                                    df.ReturnRecord(in1);
                                    return;
                                }
                            }
                        }
                    }
                }
                else
                {
                    if (record2 == -1)
                    {
                        while (true)
                        {
                            if (Compare(previous1Record, record1))
                            {
                                df.SaveRecord(record1, outTape);
                                previous1Record = record1;
                                record1         = df.ReadRecord(in1);
                                if (record1 == -1)
                                {
                                    return;
                                }
                            }
                            else
                            {
                                df.ReturnRecord(in1);
                                return;
                            }
                        }
                    }
                    else if (record1 == -1)
                    {
                        while (true)
                        {
                            if (Compare(previous2Record, record2))
                            {
                                df.SaveRecord(record2, outTape);
                                previous2Record = record2;
                                record2         = df.ReadRecord(in2);
                                if (record2 == -1)
                                {
                                    return;
                                }
                            }
                            else
                            {
                                df.ReturnRecord(in2);
                                return;
                            }
                        }
                    }
                    else
                    {
                        return;
                    }
                }
            }
        }