Dear Prof. Rohlf,
last time I did by mistake post an email to the CLASSIFIATION
list which was inteneded to be a private email. I hope you
will not be too upset with me. It was really a mistake
and I'm very sorry about this.

Now, I think I have found that problem with the infinite
loop in your Fortran code of DSLK:
After label 400 there is a call of subroutine MDIS2 which
determines a heap array HEAP(NHEAP). Sometimes NHEAP will
be zero. However, after calling MDIS2 the content of NHEAP is
tested for NHEAP .LT. 0, which can never happen. Since
NHEAP can be zero after MDIS2, it must be prevented from
entering the code which contains the subroutine calls
DRHEAP and DLHEAP. Therefore, when I replace this test
by the test for .EQ. 0, your subroutine will run.

Sorry for not getting back to your earlier on this
issue since I had a number of other things to do.

With kind regards, Wolfgang Hartmann