- if( cl->c_average_count == cl->i_cr_average )
- {
- cl->delta_cr = ( cl->delta_cr
- * (cl->i_cr_average - 1)
- + ( i_extrapoled_clock - i_clock ) )
- / cl->i_cr_average;
- }
- else
- {
- cl->delta_cr = ( cl->delta_cr
- * cl->c_average_count
- + ( i_extrapoled_clock - i_clock ) )
- / (cl->c_average_count + 1);
- cl->c_average_count++;
- }
+ delta_cr = ( cl->delta_cr * (cl->i_cr_average - 1)
+ + ( i_extrapoled_clock - i_clock )
+ + cl->i_delta_cr_residue )
+ / cl->i_cr_average;
+ cl->i_delta_cr_residue = ( cl->delta_cr * (cl->i_cr_average - 1)
+ + ( i_extrapoled_clock - i_clock )
+ + cl->i_delta_cr_residue )
+ % cl->i_cr_average;
+ cl->delta_cr = delta_cr;
+ cl->last_sysdate = mdate();