Oracle date not returning the right data
The to_date function creates a date with a time. If I remember well this is 12:00. If the date in your table has a different time then this is also taken into account. When you want to test dates then you better put the trunc() function around your date like:

select as_of_dt
from   budget
where  trunc(as_of_dt) &lt;= to_date('2016-05-15', 'yyyy-MM-dd');


Now the time part is the same in both dates.