        subroutine CKICM3(Y,NYR,PFIRST,PLAST)
      include 'SIZE.INC'
      include 'GLOBAL.INC'
      include 'LOCAL.INC'
      include 'UNITS.INC'
      include 'LOCAL1.INC'
        dimension  Y(KOUNT,KCHEM)
        double precision Y
        double precision DTEMP
        real SATST, MOLTST, CHECK, TEMP, YMAX, YOLD
        integer I, J, K, II, ITST, IPULS1, III, IV, VRAIL
        integer NYR, PFIRST, PLAST
      do 120 IPULS1 = PFIRST, PLAST
         K = ICHEMG(IPULS1)
         J = ISEGG(IPULS1)
         MOLTST = MWTG(K)*0.01
         II = -3
         ITST = 0
         YOLD = Y(J,K)
         do 110 I = 1, 7
            II = II+1
            if (SPFLGG(I,K).eq.0) go to 110
            TEMP = 1.0E+06*IMASSG(IPULS1)/WATVOL(J)
            SATST = ALPHA(3*I+II,J,K)*YOLD
            CHECK = 0.50*YSATL(I,J,K)
            if (I.eq.1.and.CHECK.gt.MOLTST) CHECK = MOLTST
            if (SATST.le.CHECK) go to 100
            IFLAG = 10
            III = VRAIL(CHEMNA(1,K))
            write (TTYOUT(MACHNO),5000) NAMONG(NDAT),NYR,(CHEMNA(IV,K),
     &         IV=1,III)
5000        format (' During ',A4,' of year ',I4,' the concentration of'
     &         /1X,50A1)
            write (TTYOUT(MACHNO),5010) J
5010  format (' in segment ',I4/' reached a level at which EXAMS'' under
     &lying assumptions are'/' violated.  The RUN has been terminated.')
            go to 130
100         continue
            SATST = ALPHA(3*I+II,J,K)*(YOLD+TEMP)
            if (SATST.le.CHECK) go to 110
            if (ITST.eq.0) write (TTYOUT(MACHNO),5020) J
            ITST = 1
            YMAX = CHECK/ALPHA(3*I+II,J,K)
            IMASSG(IPULS1) = (YMAX-YOLD)*WATVOL(J)*1.0E-06
110      continue
         DTEMP = 1.0D+00
         DTEMP = 1.0E+06*IMASSG(IPULS1)/WATVOL(J)
         Y(J,K) = Y(J,K)+DTEMP
120   continue
5020  format (/1X,'Pulse in segment',I5/1X,'too big.  Check output Table
     &s for adjusted value.')
130   continue
      return
      end
