The problem is you're explicitly using a start position of 0
in your second transfer operation. You need to use the position argument in transferFrom like so
fco.transferFrom(fc1, 0, fc1.size());
// fco.position(fc1.size()); <-- unneeded.
// fco.transferFrom(fc2, 0, fc2.size()); <-- 2nd parameter is the source of your bug.
fco.transferFrom(fc2, fc1.size() - 1, fc2.size()); // <-- check with your input.
// I did a Hello world test.