Issue baking glossy and diffuse maps from principled bsdf

Hello,
I’m trying to bake a few different basic materials on an object into one pbr material, with glossy, roughness, normal, and diffuse maps.
Each material is just a principled bsdf with different settings. The roughness bake works as expected, and I haven’t done the normal yet.

But whenever I bake the glossy map it ends up with every island completely white, and when I bake the diffuse map all the metallic parts end up dark even though the colours are supposed to be white or light grey.
When I use a glossy and diffuse node mixed together (instead of a principled bsdf) it seems to fix the glossy map issue, and when I set up the colours as emissive shaders it renders them properly as well.

Is there any way to make this work properly using a principled bsdf shader? Or am I just going to have to make all my materials with glossy, diffuse, and mix nodes, and add emissive colours when I want to bake?