Example: Modified Macauley Duration of a Security with Periodic Payments

The modified Macauley duration of a 10 year bond which pays interest semiannually is returned in this example.
using System;
using Imsl.Finance;

public class mdurationEx1
{
    public static void  Main(String[] args)
    {
        DateTime settlement = DateTime.Parse("7/1/85");
        DateTime maturity = DateTime.Parse("7/1/95");
        double coupon = .075;
        double yield = .09;
        Bond.Frequency freq = Bond.Frequency.SemiAnnual;
        DayCountBasis dcb = DayCountBasis.BasisActual365;
        double mduration = Bond.Mduration(settlement, maturity, coupon,
                                          yield, freq, dcb);
        Console.Out.WriteLine("The modified Macauley duration " +
                              "of the bond");
        Console.Out.WriteLine("with semiannual interest payments is "
                              + mduration);
    }
}

Output

The modified Macauley duration of the bond
with semiannual interest payments is 6.73871136648053

Link to C# source.