I printed out the joint positions of the fingers to be sure, but as you can see the "next joint" of one bone is exactly the same value as the "prev joint" of the next bone.
Finger0
b0 p:(-72.761330, 182.305008, 39.177826) n:(-72.761330, 182.305008,39.177826)
b1 p:(-72.761330, 182.305008, 39.177826) n:(-42.698833, 208.338745,19.379961)
b2 p:(-42.698833, 208.338745, 19.379961) n:(-23.042648, 218.873962,-1.195370)
b3 p:(-23.042648, 218.873962, -1.195370) n:(-11.299082, 221.120651,-18.249361)
Finger1
b0 p:(-90.539101, 189.739105, 30.592447) n:(-71.456863, 221.748596,-23.238134)
b1 p:(-71.456863, 221.748596, -23.238134) n:(-63.430676, 241.529160,-54.957947)
b2 p:(-63.430676, 241.529160, -54.957947) n:(-46.808094, 240.263443,-68.551216)
b3 p:(-46.808094, 240.263443, -68.551216) n:(-34.009480, 232.250046,-70.333900)
Finger2
b0 p:(-96.948830, 183.686417, 24.083649) n:(-83.120163, 208.085281,-31.309366)
b1 p:(-83.120163, 208.085281, -31.309366) n:(-71.168983, 221.783600,-70.162270)
b2 p:(-71.168983, 221.783600, -70.162270) n:(-48.916325, 216.777298,-81.125175)
b3 p:(-48.916325, 216.777298, -81.125175) n:(-35.094444, 208.273865,-77.083992)
Finger3
b0 p:(-101.621414, 175.526596, 18.504839) n:(-93.539291, 190.972260,-34.443989)
b1 p:(-93.539291, 190.972260, -34.443989) n:(-68.947914, 191.747131,-65.680099)
b2 p:(-68.947914, 191.747131, -65.680099) n:(-46.555801, 182.056381,-62.150333)
b3 p:(-46.555801, 182.056381, -62.150333) n:(-37.389477, 174.728851,-50.370491)
Finger4
b0 p:(-101.512672, 163.429123, 14.754340) n:(-99.640495, 172.980499,-35.921680)
b1 p:(-99.640495, 172.980499, -35.921680) n:(-76.165092, 171.429016,-56.819218)
b2 p:(-76.165092, 171.429016, -56.819218) n:(-62.345840, 167.164444,-47.133331)
b3 p:(-62.345840, 167.164444, -47.133331) n:(-60.003414, 164.419418,-32.224106)
You can do the same easily enough to verify the data on your end.
Perhaps you are rotating with some translation already, which might cause the bones to rotate around the wrong position?