text: 'use strict';
  
  var toInteger = require('./_lib/toInteger/index');
  var toDate = require('./toDate');
  var getDaysInMonth = require('./getDaysInMonth');
  
  /**
   * @name setMonth
   * @category Month Helpers
   * @summary Set the month to the given date.
   *
   * @description
   * Set the month to the given date.
   *
   * ### v2.0.0 breaking changes:
   *
   * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
   *
   * @param {Date|number} dirtyDate - the date to be changed
   * @param {number} dirtyMonth - the month of the new date
   * @returns {Date} the new date with the month set
   * @throws {TypeError} 2 arguments required
   *
   * @example
   * // Set February to 1 September 2014:
   * var result = setMonth(new Date(2014, 8, 1), 1)
   * //=> Sat Feb 01 2014 00:00:00
   */
  module.exports = function setMonth(dirtyDate, dirtyMonth) {
      if (arguments.length < 2) {
          throw new TypeError(
              '2 arguments required, but only ' + arguments.length + ' present'
          );
      }
  
      var date = toDate(dirtyDate);
      var month = toInteger(dirtyMonth);
      var year = date.getFullYear();
      var day = date.getDate();
  
      var dateWithDesiredMonth = new Date(0);
      dateWithDesiredMonth.setFullYear(year, month, 15);
      dateWithDesiredMonth.setHours(0, 0, 0, 0);
      var daysInMonth = getDaysInMonth(dateWithDesiredMonth);
      // Set the last day of the new month
      // if the original date was the last day of the longer month
      date.setMonth(month, Math.min(day, daysInMonth));
      return date;
  };
  