refactored diffuseOnly to matchvariable names
Also clamped individual axes to zero when negative, instead of the general dotproduct