module nhelicon {  # Nonstationary convolution, inverse to deconvolution.
#             Requires the filter be causal with an implicit "1." at the onset.
use nhelix
type( nfilter) :: aa
#%  _init( aa)
#%  _lop ( xx,  yy)
integer                         :: iy, ix, ia, ip
integer, dimension( :), pointer :: lag
real,    dimension( :), pointer :: flt
if( adj)              # zero lag
	xx += yy
else
	yy += xx
write(0,*) "where do i die 1"
do iy = 1, size( yy) {    	
write(0,*) "where do i die 2"
	if( associated( aa%mis)) { if( aa%mis( iy)) cycle}
        ip = aa%pch( iy); lag => aa%hlx( ip)%lag; flt => aa%hlx( ip)%flt
write(0,*) "where do i die 3",ip
write(0,*) "check tis",size(lag)
	do ia = 1, size( lag) {
            ix = iy - lag( ia); if( ix < 1) cycle;
            if( adj)
                        xx(ix) += yy(iy) * flt( ia)
	    else	{
                        yy(iy) += xx(ix) * flt( ia)
						}
	    }
      }
}
