Component based software development (CBD) reduces development time and effort by allowing systems to be built from pre-developed reusable components. A classical approach to reduce embedded systems design and run-time complexity is to partition the behavior into a set of major system modes. In supporting system modes in CBD, a key issue is seamless composition of multi-mode components into systems. In addressing this issue, we present a mode switch logic and algorithm for component-based multi-mode systems. The algorithm implements seamless coordination and synchronization of mode switch in systems composed of independently developed components. The paper provides formally defined semantics covering aspects relevant for mode switch, together with algorithms implementing mode switch rules for different types of components. The approach is illustrated by a simple example.