The SST read and interpolate routines were not right for Reynolds weekly SST. On Jan 25, 2005, I tested the timing and created 4 patches to synchronize the Reynolds SST with the model. The timing was off by one day, with discontinuities in the timing right at the beginning of the model integration, and intermittently near the time of reading a new SST record (see patch 4). SST varies slowly enough on the weekly timescale that this error should not funamentally affect previous results using the old SST timing. The patches are: 1. Replace the line: aday_model= 3.5+real(ibhh+mtime)/24 with aday_model=-2.5+real(ibhh+mtime)/24 Reasoning: 2.5 days is the offset between the starting time assumed by this SST timimg algorithm (1 Jan 1990 00:00), and the actual middle of the first Reynolds SST averaging window (3 Jan 1990 12:00). This -2.5 is particular to the Reynolds SST data file that starts on 3 Jan. 2. Add one to akss in akss=real(kdayt)/real(nday_sst) + 1 Reasoning: akss will give us ksst, which needs to be in fortran (1:n) subscripts. It was in c (starting with 0) subscripts. When the time offset from the beginning of the SST data is 0, model.f needs to read the first (subscript=1) week's SST. 3. Use aday0 instead of nday0 in dt_sst=amod(aday0*daysec+real(nt-nt0)*dt, + real(nday_sst)*daysec)/(real(nday_sst)*daysec) Because the center of the weekly window is at noon, halfway through the day, we need a real variable to take care of the offset, rather than an integer. 4. It's important whenever dt_sst wraps around (becomes near zero again), that a new SST record is read. I have moved the SST read and update (other than the first two at initialization) between the calculation of dt_sst and the temporal interpolation. I store the last timestep dt_sst as dt_ssto. If and only if dt_sst jumps from near 1 to near 0 then dt_sst < dt_ssto; this is the condition for reading the next SST record. In general SST could be read even when the reanalysis is not read, so it's better that it is removed from the reanalysis read condition. If this is illustrated better in code: dt_sst=amod(aday0*daysec+real(nt-nt0)*dt, + real(nday_sst)*daysec)/(real(nday_sst)*daysec) if( dt_sst .lt. dt_ssto) then ssto=sstn call sst_set(sstn,lnd,lq,lp,dx,dy,79,1,1) endif sst=ssto-(sstn-ssto)*dt_sst write(6,*) sst, dt_sst ! test diagnostic sstm=sstm+sst*asum_sec dt_ssto = dt_sst