rem: *StartPointLeft = endpoint;
add: *StartPointLeft = endpoint >> 16;
context: AddLongMono( ADDARGS ){  LONG    *src    = Src;  LONG    *dst    = *Dst;  Fixed64  offset = *Offset;  int      i;  LONG     startpoint, endpoint = 0; // Make compiler happy  LONG     lastpoint;  lastpoint = 0;                      // 0 doesn't affect the StopAtZero code  for( i = 0; i < Samples; i++)  {    if( offseti == FirstOffsetI ) {      startpoint = *StartPointLeft;    }    else    {      startpoint = src[ offseti - 1 ];    }    endpoint = src[ offseti ];    startpoint += (LONG) (((LONGLONG) (endpoint - startpoint) * offsetf ) >> 32);    if( StopAtZero &&        ( ( lastpoint < 0 && startpoint >= 0 ) ||          ( lastpoint > 0 && startpoint <= 0 ) ) )    {      break;    }    lastpoint = startpoint;    *dst++ += (LONG) ( ( (LONGLONG) ScaleLeft * startpoint ) >> 16 );    offset += Add;  }  *StartPointLeft = endpoint;  *Dst    = dst;  *Offset = offset;  return i;}