XML 42 R31.htm IDEA: XBRL DOCUMENT
v3.21.1

Fair Value Measurements (Details) $ in Thousands | 3 Months Ended | 12 Months Ended |
--- | --- | --- | ---
Mar. 31, 2021 USD ($) employee | Dec. 31, 2020 USD ($) | Nov. 30, 2021 USD ($)
Fair Value Measurements |  |  |
Number of employees covered under life insurance policies | employee | 89 |  |
Combined face value of life insurance policies | $ 63,200 |  |
Cash surrender value | $ 5,700 | $ 5,400 |
Minimum |  |  |
Fair Value Measurements |  |  |
Weighted average cost of capital | 10.00% |  |
Maximum |  |  |
Fair Value Measurements |  |  |
Weighted average cost of capital | 17.50% |  |
Contingent earn-out obligations |  |  |
Reconciliation of the fair value of contingent earn-out obligations that use significant unobservable inputs (Level 3) |  |  |
Balance at beginning of year | $ 25,979 | 28,497 |
Issuances | 3,255 | 16,715 |
Settlements |  | (10,114) |
Adjustments to fair value | (1,186) | (9,119) |
Balance at end of period | 28,048 | 25,979 |
Recurring basis | Total |  |  |
Fair Value Measurements |  |  |
Cash and cash equivalents | 52,116 | 54,896 |
Life insurance-cash surrender value | 5,708 | 5,420 |
Contingent earn-out obligations | 28,048 | 25,979 |
Recurring basis | Quoted Market Prices In Active Markets for Identical Assets (Level 1) |  |  |
Fair Value Measurements |  |  |
Cash and cash equivalents | 52,116 | 54,896 |
Recurring basis | Fair Value Measurements at Reporting Date Using Significant Other Observable Inputs (Level 2) |  |  |
Fair Value Measurements |  |  |
Life insurance-cash surrender value | 5,708 | 5,420 |
Recurring basis | Significant Unobservable Inputs (Level 3) |  |  |
Fair Value Measurements |  |  |
Contingent earn-out obligations | 28,048 | 25,979 |
Interest Rate Swap |  |  |
Fair Value Measurements |  |  |
Net loss on derivative | 100 |  |
Interest Rate Swap | Not Designated as Hedging Instrument, Economic Hedge [Member] |  |  |
Fair Value Measurements |  |  |
Notional amount | 130,000 |  | $ 80,000
Interest Rate Swap | Recurring basis | Total | Not Designated as Hedging Instrument, Economic Hedge [Member] |  |  |
Fair Value Measurements |  |  |
Interest rate swap liability | 45 | 42 |
Interest Rate Swap | Recurring basis | Fair Value Measurements at Reporting Date Using Significant Other Observable Inputs (Level 2) | Not Designated as Hedging Instrument, Economic Hedge [Member] |  |  |
Fair Value Measurements |  |  |
Interest rate swap liability | $ 45 | $ 42 |

X
- Definition Fair value, as of the balance sheet date, of potential cash payments under the contingent consideration arrangement. + References No definition available. + Details
Name: | fix_BusinessAcquisitionContingentConsiderationFairValueAtBalanceSheetDate
Namespace Prefix: | fix_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | instant

X
- Definition Derivative instrument notional amount. + References No definition available. + Details
Name: | fix_DerivativeInstrumentNotionalAmount
Namespace Prefix: | fix_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | instant

X
- Definition Amount of net loss recognized on derivative. + References No definition available. + Details
Name: | fix_DerivativeNetLossOnDerivative
Namespace Prefix: | fix_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | duration

X
- Definition Represents the face amount of life insurance policies taken by the entity for their employees. + References No definition available. + Details
Name: | fix_LifeInsuranceContractsFaceAmount
Namespace Prefix: | fix_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Represents the number of employees covered under life insurance policy contracts. + References No definition available. + Details
Name: | fix_LifeInsuranceContractsNumberOfEmployeesCovered
Namespace Prefix: | fix_
Data Type: | xbrli:integerItemType
Balance Type: | na
Period Type: | instant

X
- Definition Percentage of weighted average cost of capital. + References No definition available. + Details
Name: | fix_WeightedAverageCostOfCapital
Namespace Prefix: | fix_
Data Type: | num:percentItemType
Balance Type: | na
Period Type: | duration

X
- Definition Fair value portion of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. + References No definition available. + Details
Name: | us-gaap_CashAndCashEquivalentsFairValueDisclosure
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Fair value portion of the amount that could be realized under a life insurance contract or contracts owned by the entity, commonly known as corporate-owned life insurance (COLI) or bank-owned life insurance (BOLI). + References No definition available. + Details
Name: | us-gaap_CashSurrenderValueFairValueDisclosure
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Carrying amount as of the balance sheet date of amounts which could be received based on the terms of the insurance contract upon surrendering life policies owned by the entity. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Publisher FASB -Name Accounting Standards Codification -Topic 210 -SubTopic 10 -Section 45 -Paragraph 4 -Subparagraph (d) -URI http://asc.fasb.org/extlink&oid=121566466&loc=d3e6812-107765 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Publisher FASB -Name Accounting Standards Codification -Topic 210 -SubTopic 10 -Section S99 -Paragraph 1 -Subparagraph (SX 210.5-02.17) -URI http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682 + Details
Name: | us-gaap_CashSurrenderValueOfLifeInsurance
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | instant

X
- Definition Fair value, before effects of master netting arrangements, of a financial liability or contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes liabilities elected not to be offset. Excludes liabilities not subject to a master netting arrangement. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Publisher FASB -Name Accounting Standards Codification -Topic 860 -SubTopic 20 -Section 50 -Paragraph 4D -Subparagraph (c)(2) -URI http://asc.fasb.org/extlink&oid=121570589&loc=SL51823488-111719 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Publisher FASB -Name Accounting Standards Codification -Topic 815 -SubTopic 10 -Section 50 -Paragraph 4B -Subparagraph (a),(c) -URI http://asc.fasb.org/extlink&oid=121590274&loc=SL5624163-113959 Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef -Publisher FASB -Name Accounting Standards Codification -Topic 210 -SubTopic 20 -Section 50 -Paragraph 3 -Subparagraph (a) -URI http://asc.fasb.org/extlink&oid=51824906&loc=SL20225862-175312 Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef -Publisher FASB -Name Accounting Standards Codification -Topic 210 -SubTopic 20 -Section 55 -Paragraph 7 -URI http://asc.fasb.org/extlink&oid=99393222&loc=SL20226000-175313 + Details
Name: | us-gaap_DerivativeFairValueOfDerivativeLiability
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | instant

X
- Definition Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table. + References No definition available. + Details
Name: | us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Definition A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period. + References No definition available. + Details
Name: | us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Definition Amount of gain (loss) recognized in income from liability measured at fair value on recurring basis using unobservable input (level 3). + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 820 -SubTopic 10 -Section 50 -Paragraph 2 -Subparagraph (c)(1) -URI http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258 + Details
Name: | us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | duration

X
- Definition Amount of issuances of financial instrument classified as a liability measured using unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Publisher FASB -Name Accounting Standards Codification -Topic 820 -SubTopic 10 -Section 50 -Paragraph 2 -Subparagraph (c)(2) -URI http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258 + Details
Name: | us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | duration

X
- Definition Amount of settlements of financial instrument classified as a liability measured using unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Publisher FASB -Name Accounting Standards Codification -Topic 820 -SubTopic 10 -Section 50 -Paragraph 2 -Subparagraph (c)(2) -URI http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258 + Details
Name: | us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | debit
Period Type: | duration

X
- Definition Fair value of financial instrument classified as a liability measured using unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Publisher FASB -Name Accounting Standards Codification -Topic 820 -SubTopic 10 -Section 50 -Paragraph 2 -Subparagraph (c) -URI http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258 + Details
Name: | us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | instant

X
- Details
Name: | srt_RangeAxis=srt_MinimumMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | srt_RangeAxis=srt_MaximumMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FairValueByLiabilityClassAxis=fix_ContingentConsiderationObligationsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FairValueByMeasurementBasisAxis=us-gaap_EstimateOfFairValueFairValueDisclosureMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel1Member
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel2Member
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel3Member
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_HedgingDesignationAxis=us-gaap_NotDesignatedAsHedgingInstrumentEconomicHedgeMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |