Example: Duration of a Security with Periodic Payments

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

public class durationEx1
{
    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 duration = Bond.Duration(settlement, maturity, coupon,
                                        yield, freq, dcb);
        Console.Out.WriteLine("The annual duration of the bond with" + 
                              "\nsemiannual interest payments is " + 
                              duration);
    }
}

Output

The annual duration of the bond with
semiannual interest payments is 7.04195337797215

Link to C# source.