Glossy reflections and smooth shading I'm having a hard time creating a chrome object with flat faces but with smoothly bevelled edges.

If you start with the default cube, add a bevel modifier set to, say, 4 segments, set to smooth shading and render in cycles, then everything looks as expected. If you now add a glossy material with no roughness and an HDRI environment things don't look quite right - at least to my eye.

On the main faces inherited from the original cube the reflections are slightly bent. The bending is reduced if I increase the number of segments in the bevel modifier. At 100 (the max) things are just about OK. Adding loop cuts or a subsurf often makes things worse with some views revealing the triangulation used to render.

I think I understand the cause and that is due to the interpolation of the normal over the whole face which creates a slight curving of the reflection.

Adding an edge split and adjusting the angle works but adds sharp edges as you'd expect and the faces drop back to planar. Applying the bevel, selecting the large faces and making them planar adds a crease around them.

Explicitly modelling the bevel makes no difference.

Adding an inset face simply adds reflection weirdness to the outer "frame" faces that are created.

My objective is to have the main faces of my object flat mirrors and bevelled edges as close as possible to cylinders that smoothly join them.

Any thoughts?

Update

Here's a picture I constructed in PovRay to illustrate the issue, or rather to show what I'm aiming for:



Here's what I created in Blender 2.76rc3 using a bevel modifier with a segment count of 4:



And here with a segment count of 100:



This next image shows that making the centre panels flat shaded causes the normals to be split and thus display a discontinuity:



This next one shows that adding an inset face causes even more strangeness.



Here's my result using a subsurf - admittedly it could be improved but I was trying to avoid this method as it will not work with the target object that I really need to use the method on.



Finally, here is the result I managed to achieve using the Blend4Web normal editor to set the corner vertex normals of the main faces to be equal to the normal of the face.  I accidentally used a different radius.



This is the best so far but still I'm not happy with the process.  I thought at the start that I was doing something fundamentally wrong but I'm slowly coming to the conclusion that this is just the way it is.
There are two common ways for modeling rounded corners. One, using a bevel modifier. Two, using a subdivision surface modifier. Both have advantages.

Bevel Modifier:

The bevel modifier's main problem is the sharp edge it gives on each side of the bevel as seen in the image below. It can look very 3Dish when using highly reflective shaders. But the advantage is that it keeps a relatively low polygon count in comparison to subdivision surfaces and keeps a better curvature by maintaining a perfectly circular curve.

To reduce distortion in the reflections, one can add edge loops to correct the normals so that they face directly outwards. See image below.

Subdivision Surface Modifier:

The advantage to the Subdivision Surface (sub-surf) modifier is the smooth transition of faces that the catmull-clark algorithm creates. But, to get noon-distorted results, you must have a high subdivision level, Causing polygon counts to double or quadruple.

In the end, neither are perfect. But the sub-surf modifier will give better results. At the cost of your render speed.

An example of the subdivision method:


An example of the bevel method with added edge loops to improve normals: