Is there a way to change the orientation of a cloned collection of blocks?

I know how to use the clone command to copy a collection of blocks between specified coordinates for a lower-near-right and upper-far-left of the area to be copied, to the lower-far-left of the area to copy to:

clone    0 4 0    -5 9 -5      5 4 5
|  from  |     to    | destination

The command above will copy a 5x5x5 collection of blocks to the coordinate 5, 4, 5 where that coordinate is the lower-far-left corner of the copied blocks, filling away from the world origin, towards the lower-near-right corner specified as the clone area starting point:

The gold blocks are the lower-near-right corner of the cloned area and the diamond blocks are the lower-far-left corner.

With that in mind, I often find myself wanting to copy a collection of blocks to a new area with a new orientation. For example, let's say I wanted to create a cross where each arm is a 2x1x3 collection of any block type. I want to be able to create the first arm, then clone it, rotated 90 degrees, then repeat the rotate and clone until I have all four arms leaving me to simply fill in the center:

Is there a way to either:

• Clone with a lower-right and upper-left position specified for the destination?
• Clone with a specified rotation on say the y-axis?

NOTE: Creating a custom behavior pack isn't out of the question, so long as I can easily execute the clone.

The definitions of lower-far-left, lower-near-right, and upper-far-left, in the context of this post, are, with respect to the origin of the world located at 0, 0, 0 where: lower-far-left denotes a smaller value all three axes, lower-near-right denotes a smaller value on the y-axis with a larger value on the x and z axes, and upper-far-left denotes a larger value on the y-axis with a smaller value on the x and z axes.