Mutually Exclusive Options problem.
  Almost done with my Installer, but have been stuck on one problem which I've been unable to solve.
I have 3 option groups with 2 mutually exclusive options each. Now this is where it gets confusing.
If the Top option in each group is selected (Sec2, Sec4, Sec6) by the user, then the user can change between options in any other of the 3 groups by single clicking between each selection, as one would expect. However, if the bottom option in any group is selected (Sec1, Sec3, Sec5) then the user has to unselect the selected option before selecting another, as it locks and wont allow it to change. So it works one way, but not the other.
onSelChange
  Push$0
 
>;OptionGroup1
    StrCmp $R9${Sec1} check_Sec1
    SectionGetFlags${Sec1} $0
    IntOp$0 $0 & ${SF_SELECTED}
   IntCmp $0 ${SF_SELECTED} 0 OptionGroup1Done OptionGroup1Done
      StrCpy $R9${Sec1}
     SectionGetFlags ${Sec2} $0
      IntOp$0 $0 & ${SECTION_OFF}
     SectionSetFlags ${Sec2} $0
  
    Goto OptionGroup1Done  
    
  check_Sec1:
 
   SectionGetFlags ${Sec2} $0
    IntOp$0 $0 & ${SF_SELECTED}
   IntCmp $0 ${SF_SELECTED} 0 OptionGroup1Done OptionGroup1Done
      StrCpy $R9${Sec2}
     SectionGetFlags ${Sec1} $0
      IntOp$0 $0 & ${SECTION_OFF}
     SectionSetFlags ${Sec1} $0
   
   OptionGroup1Done:
   
;OptionGroup2
    StrCmp $R9${Sec3} check_Sec3
    SectionGetFlags${Sec3} $0
    IntOp$0 $0 & ${SF_SELECTED}
   IntCmp $0 ${SF_SELECTED} 0 OptionGroup2Done OptionGroup2Done
      StrCpy $R9${Sec3}
     SectionGetFlags ${Sec4} $0
      IntOp$0 $0 & ${SECTION_OFF}
     SectionSetFlags ${Sec4} $0
 
     Goto OptionGroup2Done 
     
  check_Sec3:
 
   SectionGetFlags ${Sec4} $0
    IntOp$0 $0 & ${SF_SELECTED}
   IntCmp $0 ${SF_SELECTED} 0 OptionGroup2Done OptionGroup2Done
      StrCpy $R9${Sec4}
     SectionGetFlags ${Sec3} $0
      IntOp$0 $0 & ${SECTION_OFF}
     SectionSetFlags ${Sec3} $0
  
  OptionGroup2Done:
    
;OptionGroup3 
    StrCmp $R9${Sec5} check_Sec5
    SectionGetFlags${Sec5} $0
    IntOp$0 $0 & ${SF_SELECTED}
   IntCmp $0 ${SF_SELECTED} 0 OptionGroup3Done OptionGroup3Done
      StrCpy $R9${Sec5}
     SectionGetFlags ${Sec6} $0
      IntOp$0 $0 & ${SECTION_OFF}
     SectionSetFlags ${Sec6} $0
 
    Goto OptionGroup3Done 
  
  check_Sec5:
 
   SectionGetFlags ${Sec6} $0
    IntOp$0 $0 & ${SF_SELECTED}
   IntCmp $0 ${SF_SELECTED} 0 OptionGroup3Done OptionGroup3Done
      StrCpy $R9${Sec6}
     SectionGetFlags ${Sec5} $0
      IntOp$0 $0 & ${SECTION_OFF}
     SectionSetFlags ${Sec5} $0
  OptionGroup3Done:
 
 Pop $0
FunctionEnd 
>