There is a problem with the existing mechanism, because it call the dot_all_many_one version of the dot_all routines, and passes it the slice recip_coeffs(:,1:nb-1) and recip_coeffs(:,nb); now, however, band nb may or may not be on the node and so one or both of these may be null.
In addition wave_(S)dot_lower_slice_slice on different nodes may have different numbers of bands in the second slice and a different band to orthogonalise below as well.
We created dedicated subroutines to perform these operations, rather than attempting to reuse existing subroutines which were not designed for these circumstances.