There is a bug in the way the Destination class determines whether or not the specified timestamp falls on a valid day.

In com.serotonin.bacnet4j.type.constructed.Destination.java:

public boolean isSuitableForEvent(TimeStamp timeStamp, EventState toState) {
    // Only check date fields if the timestamp is not a sequence number.
    if (!timeStamp.isSequenceNumber()) {
        // Check if the timestamp day of week is in the valid days of week list.
        if (!validDays.contains(timeStamp.getDateTime().getDate().getDayOfWeek().getId()))
            return false;

        // Check if the timestamp is between the from and to times.
        if (timeStamp.getDateTime().getTime().before(fromTime) || timeStamp.getDateTime().getTime().after(toTime))
            return false;
    }

    // Check if the destination is interested in this new event state.
    return transitions.contains(toState);
}

and com.serotonin.bacnet4j.type.constructed.DaysOfWeek.java

public boolean contains(int day) {
    return getValue()[day];
}

timeStamp.getDateTime().getDate().getDayOfWeek().getId() returns a number from 1-7
However, the DaysOfWeek class stores the days in a 0 indexed array 0-6, which means the wrong index is checked every time this function is called.