A controller for identifying a fault location in an uninterruptible power supply system (100, 300) including a plurality of UPSs (102, 104, 106, 108, 302, 304, 306) and a ring bus (118, 314, 410, 510), each of the plurality of UPSs (102, 104, 106, 108, 302, 304, 306) being connected to the ring bus (118, 314, 410, 510) via a static switch (340, 342, 344, 408) of a plurality of static switches (340, 342, 344, 408), each UPS system (100, 300) comprising an inverter which includes a converter module, an output inductor connected between an output of the converter module and an output node of the inverter, and an output capacitor connected between the output node of the inverter and ground, the controller communicatively coupled to a first static switch (340, 342, 344, 408) of the plurality of static switches (340, 342, 344, 408), the first static switch (340, 342, 344, 408) coupled between a first UPS (102, 302) of the plurality of UPSs (102, 104, 106, 108, 302, 304, 306) and the ring bus (118, 314, 410, 510), the controller operable to: receive current data representative of an inverter current of the first UPS (102, 302) measured between the output inductor and the output node of the inverter and a load current delivered by the first UPS (102, 302) to the ring bus (118, 314, 410, 510); characterized in that the controller is further operable to perform the following for the first UPS (102, 302): calculate a current difference between the inverter current and the load current; determine a voltage of the output capacitor; calculate a derived current based on the determined voltage and a predetermined capacitance of the output capacitor; calculate a difference between the current difference and the derived current; compare the difference to a predetermined threshold; identify the fault location as being (i) at the first UPS (102, 302) when the difference exceeds the predetermined threshold or (ii) at a location external to the first UPS (102, 302) when the difference is within the predetermined threshold; and control the first static switch (340, 342, 344, 408) based on the identified fault location. receive current data representative of an inverter current of the first UPS (102, 302) measured between the output inductor and the output node of the inverter and a load current delivered by the first UPS (102, 302) to the ring bus (118, 314, 410, 510); characterized in that the controller is further operable to perform the following for the first UPS (102, 302): calculate a current difference between the inverter current and the load current; determine a voltage of the output capacitor; calculate a derived current based on the determined voltage and a predetermined capacitance of the output capacitor; calculate a difference between the current difference and the derived current; compare the difference to a predetermined threshold; identify the fault location as being (i) at the first UPS (102, 302) when the difference exceeds the predetermined threshold or (ii) at a location external to the first UPS (102, 302) when the difference is within the predetermined threshold; and control the first static switch (340, 342, 344, 408) based on the identified fault location. calculate a current difference between the inverter current and the load current; determine a voltage of the output capacitor; calculate a derived current based on the determined voltage and a predetermined capacitance of the output capacitor; calculate a difference between the current difference and the derived current; compare the difference to a predetermined threshold; identify the fault location as being (i) at the first UPS (102, 302) when the difference exceeds the predetermined threshold or (ii) at a location external to the first UPS (102, 302) when the difference is within the predetermined threshold; and control the first static switch (340, 342, 344, 408) based on the identified fault location.