I have tried to set the origin of a mesh using "Origin to Geometry", "Origin to Center of Mass (Surface)" and "Origin to Center of Mass (Volume)".
None gave me the correct result.
What am I doing wrong?
Because your mesh is fatter at the bottom than it is at the top, the center of mass by volume and by surface are toward the fatter end of your mesh.
Your best bet is to position your 3D cursor where you want your origin to be, and then set the origin to the 3D cursor.
In Edit Mode, select one vertex on each end of your mesh. In your case this is easy because you have conveniently centered vertices.
Hit SHIFT + S and choose 'Cursor to Selected'
In Object Mode, set the Origin to 3D Cursor.
I understand that you want the origin to be at the centre of the bounding box. Origin to Geometry will do this if you first set the transform pivot point to Bounding Box Center. (The button for setting the transform pivot point is the second of the four buttons near the centre of the 3D Viewpoint header.)