• Update and answer:

    Update:

    I was missing several .Value items and chose to use dateinterval.{day,month,year} instead of "m" or "d";

    as well, instead of just returning an integer to plug into a data building field I used date serializer; Here is the working code, I hope somebody can get use out of my 3-day torment.

    =DateSerial(Fields!LastYear.Value,

    DatePart(dateinterval.month,Parameters!EndDate.Value),

    IIF(

    DatePart(dateinterval.month,Parameters!EndDate.Value) = 2 AND

    iif(

    cdbl(DatePart(dateinterval.year,Parameters!StartDate.Value)Mod 400)=0,366,

    iif(cdbl(DatePart(dateinterval.year,Parameters!StartDate.Value)Mod 100)=0,365,

    iif(cdbl(DatePart(dateinterval.year,Parameters!StartDate.Value)Mod 4)=0,366,365))

    ) = 366 AND

    DatePart(dateinterval.day,Parameters!EndDate.Value) = 29 ,DatePart(dateinterval.day,Fields!LYLastDayOfMonth.Value),

    IIF(

    iif(

    (cdbl(Fields!LastYear.Value)Mod 400)=0,366,

    iif((cdbl(Fields!LastYear.Value)Mod 100)=0,365,

    iif((cdbl(Fields!LastYear.Value)Mod 4)=0,366,365))

    )=366 AND

    DatePart(dateinterval.day,Parameters!EndDate.Value) = 28,DatePart(dateinterval.day,Fields!LYLastDayOfMonth.Value),DatePart(dateinterval.day,Parameters!EndDate.Value)

    )

    )

    )