In Blacs 1.1patch3 in igamx2d the comments say that if rdest==-1 then cdest is ignored:
* RDEST (input) Ptr to int
* The process row of the destination of the amx.
* If rdest == -1, then result is left on all processes in scope. <---
* CDEST (input) Ptr to int
* The process column of the destination of the amx.
* If rdest == -1, then CDEST ignored. <---
But the code looks like it is doing the reverse:
if (Mpval(cdest) == -1) trdest = -1;
else trdest = Mpval(rdest);
and a bit further down
if (trdest == -1) dest = -1;
else dest = Mpval(cdest);
So whats up?