(* This code modifies the definition of the function IntegrateIF (from the package BSplineBasis) to work under Version 3 or greater. This allows one to use the option FunctionalForm -> DLogDelta for DiscountFunction in the package YieldCurve. Note however that the functions InfoIF and PlotIFPolynomials are obsolete under Version 3 or greater. There are two ways to use apply this patch. First way: After loading BSplineBasis or YieldCurve (which loads BSplineBasis), read this file into your Mathematica session. This must be done each time you load either BSplineBasis or YieldCurve. For example, <= 3.0, (* clear definitions that do not work in Version 3 *) Clear[IntegrateIF, InfoIF, PlotIFPolynomials]; (* new usage statements for obsolete functions *) InfoIF::usage = ToString @ StringForm["Not defined in Version ``", $VersionNumber]; PlotIFPolynomials::usage = ToString @ StringForm["Not defined in Version ``", $VersionNumber]; (* new definitions for IntegrateIF *) If[$VersionNumber >= 4.0, (* then *) Derivative[n_Integer /; Negative[n]][if:InterpolatingFunction[__]] := Derivative[n+1][Head @ Integrate[if[#], #]]; IntegrateIF[if:InterpolatingFunction[__]] := Head @ Integrate[if[#], #], (* else *) (* this fix for Version 3 supplied by Rob Knapp *) IntegrateIF[if_InterpolatingFunction] := Module[{iif, mat, len}, iif = Head @ Integrate[if[#], #]; mat = iif[[4]]; len = Last @ Dimensions[mat]; iif[[4]] = #/Prepend[Range[len-1],1]& /@ mat; (* the fix *) iif] ] (* end inner if *) ] (* end outer if *) (***** code ends here *****)