If ( (not IsEmpty ( FullMember::FullStartDate) and(Get (CurrentDate)- FullMember::FullStartDate>365))

or

(not IsEmpty ( Associate::AssociateStartDate)and (Get (CurrentDate)-Associate::AssociateStartDate>365))

or

(IsEmpty ( FullMember::FullStartDate)

and IsEmpty ( Associate::AssociateStartDate))

; ""; "Y" )

The above is my calculation. If either of the Startdates is more than 365 days old or if both fields are empty, the condition is satisfied and the field is left empty.

My question is why would everything after the second "or" be necessary? And it was necessary.

I'd expect the "not IsEmpty" conditions above those lines to satisfy my requirements--but they didn't.

(IsEmpty ( FullMember::FullStartDate)

and IsEmpty ( Associate::AssociateStartDate))

Should not be necessary. Get ( CurrentDate ) - null [empty field] will yield a number in the thousands.

I suggest that you check each section of your calculation separately against your data to see if you can figure out what's going on.

I'd write the above expression this way anyway as it's easier to understand and work with.

Case ( (not IsEmpty ( FullMember::FullStartDate) and(Get (CurrentDate)- FullMember::FullStartDate>365)) ; "" ;

( not IsEmpty ( Associate::AssociateStartDate)and (Get (CurrentDate)-Associate::AssociateStartDate>365)) ; "" ;

"Y" // Else

) // Case

But with this expression in place, you can temporarily put different values than "" as the result for each of the first two Boolean expressions to see which one is failing to evaluate as expected.