Generate a series of months within a period
Evan explains why the generate_series() cannot do by itself what you want. But it can be done with a simple UNION:

select generate_series('2016-06-25'::timestamp, '2016-12-15', '1 month') 
         as g_date 
union 
select '2016-12-15'
-- order by g_date 
;


or UNION ALL:

select generate_series('2016-06-25'::timestamp, 
                       '2016-12-15' - interval '1 day', 
                       '1 month') as g_date 
union all
select '2016-12-15' ;


Also note that generate_series() output is of timestamp without
timezone type. if you want a date type, you need to cast:

select generate_series('2016-06-25'::timestamp, 
                       '2016-12-15' - interval '1 day', 
                       '1 month')::date as g_date 
union all
select '2016-12-15'::date ;