In reply to Mark Jayne.

For completeness, use CALL RANDSEED(1);
Your code looks fine, except that you are printing B instead of B2. B2 is symmetric, positive definite (print (eigval(B2));), and has unit diagonal.