C $Header: /u/gcmpack/MITgcm/pkg/cal/cal_dayspermonth.F,v 1.2 2003/10/09 04:19:19 edhill Exp $
C $Name:  $

#include "CAL_OPTIONS.h"

      subroutine CAL_DAYSPERMONTH( 
     I                             myiter,
     I                             mytime,
     O                             ndays,
     I                             mythid
     &                           )

c     ==================================================================
c     SUBROUTINE cal_DaysPerMonth
c     ==================================================================
c
c     o Given the iteration number and/or the current time of integration
c       return the number of days left in the current calendar month
c       including the day belonging to iter/currenttime.
c              
c     started: Christian Eckert eckert@mit.edu  30-Jun-1999
c
c     changed: Christian Eckert eckert@mit.edu  29-Dec-1999
c
c              - restructured the original version in order to have a
c                better interface to the MITgcmUV.
c
c              Christian Eckert eckert@mit.edu  03-Feb-2000
c
c              - Introduced new routine and function names, cal_,
c                for verion 0.1.3.
c
c     ==================================================================
c     SUBROUTINE cal_DaysPerMonth
c     ==================================================================

      implicit none

c     == global variables ==

#include "cal.h"

c     == routine arguments ==

      integer myiter
      _RL     mytime
      integer ndays
      integer mythid

c     == local variables ==

      integer mydate(4)
      integer myday
      integer mymonth
      integer myyear
      integer finalyear
      integer finalmonth
      integer present
      integer final
      integer ierr

c     == end of interface ==

      call CAL_GETDATE( myiter, mytime, mydate, mythid )

      myday      = mod(mydate(1),100)
      mymonth    = mod(mydate(1)/100,100)
      myyear     = mydate(1)/10000
      present    = mydate(1)/100
      finalyear  = modelenddate(1)/10000
      finalmonth = mod(modelenddate(1)/100,100)
      final      = modelenddate(1)/100

      if (myyear .lt. finalyear) then
        ndays = ndaymonth(mymonth,mydate(3)) - myday + 1
      else if (myyear .eq. finalyear) then
        if (mymonth .eq. finalmonth) then
          ndays = mod(modelenddate(1),100) - myday + 1
        else
          ndays = ndaymonth(mymonth,mydate(3)) - myday + 1
        endif
      else

        ierr = 1201
        call CAL_PRINTERROR( ierr, mythid )
        stop ' stopped in cal_DaysPerMonth.'

      endif

      return
      end