A big problem arises when calculating the semblance. At this step (c) we have to do index calculations and extract data points. The preprocessor does not know how to handle this instance and we have no way to tell it that the operation is actually a discrete function evaluation. We would like to either have the choice of telling it that this is a valid function or that we are providing another subroutine to evaluate the derivative numerically (eg. a derivative using Fourier transforms would be one alternative). At present JAKEF and any other preprocessor do not allow this possibility. Appendix A shows the subroutine that calculates the semblance function. Appendix B shows the JAKEF produced version. It proceeds correctly up to the point of stacking the data values along the computed RMS stacking trajectory. Since it does not know how to differentiate the numerical function, the gradient is calculated as zero, and using the chain rule, indicates that the total semblance gradient is zero.