/*! Subtracts a months object from a local_date_time. Result will be same
 * day-of-month as local_date_time unless original day was the last day of month.
 * see date_time::months_duration for more details */
inline
local_date_time
operator-=(local_date_time& t, const boost::gregorian::months& m)
{
    // get_neg_offset returns a negative duration, so we add
    return t += m.get_neg_offset(t.utc_time().date());
}
 /*! Subtracts a months object and a ptime. Result will be same 
  * day-of-month as ptime unless original day was the last day of month.
  * see date_time::months_duration for more details */
 inline
 ptime 
 operator-(const ptime& t, const boost::gregorian::months& m)
 {
   // get_neg_offset returns a negative duration, so we add
   return t + m.get_neg_offset(t.date());
 }
/*! Adds a months object to a local_date_time. Result will be same
 * day-of-month as local_date_time unless original day was the last day of month.
 * see date_time::months_duration for more details */
inline
local_date_time
operator+=(local_date_time& t, const boost::gregorian::months& m)
{
    return t += m.get_offset(t.utc_time().date());
}
 /*! Subtracts a months object from a ptime. Result will be same 
  * day-of-month as ptime unless original day was the last day of month.
  * see date_time::months_duration for more details */
 inline
 ptime 
 operator-=(ptime& t, const boost::gregorian::months& m)
 {
   return t += m.get_neg_offset(t.date());
 }
 /*! Adds a months object and a ptime. Result will be same 
  * day-of-month as ptime unless original day was the last day of month.
  * see date_time::months_duration for more details */
 inline
 ptime 
 operator+(const ptime& t, const boost::gregorian::months& m)
 {
   return t + m.get_offset(t.date());
 }
		string ToString() { return CombineString(Name, std::to_string(IRPerYear),
							std::to_string(Duration.number_of_months().as_number())); }