module boundary {     # mark helix filter outputs where input is off data.
contains
  subroutine bound3 ( n1,n2,n3, c1,c2,c3, a1,a2,a3, misin) {
    integer,                intent (in)  :: n1,n2,n3, c1,c2,c3, a1,a2,a3
    logical, dimension (:), intent (out) :: misin
    integer                              :: i1,i2,i3, i, n123
    n123 = n1*n2*n3
    misin = .false.
			    # This is the transient onset onto the helix
    do i=1, a1-1          { misin(i)=.true.}    # 1-D
    do i=1,(a2-1)*n1      { misin(i)=.true.}    # 2-D
    do i=1,(a3-1)*n1*n2   { misin(i)=.true.}    # 3-D
			    # These disconnect each loop from the next.
    do i1 = 1,a1-c1       { do i =    i1, n123,    n1 { misin(i)=.true.}} #1-D
    do i1 = n1-a1+c1+1,n1 { do i =    i1, n123,    n1 { misin(i)=.true.}} #1-D
    do i2 = 1,a2-c2       { do i = i2*n1, n123, n2*n1 { misin(i)=.true.}} #2-D
    do i2 = n2-a2+c2+1,n2 { do i = i2*n1, n123, n2*n1 { misin(i)=.true.}} #2-D
    do i3 = 1,a3-c3       {    i = i3*n1*n2           ; misin(i)=.true. } #3-D
    do i3 = n3-a3+c3+1,n3 {    i = i3*n1*n2           ; misin(i)=.true. } #3-D
    }
}
