FireEye (NASDAQ:FEYE) announced better-than-expected fourth-quarter 2019 results late Wednesday. But it sure didn't feel that way, with shares of the cybersecurity platform company opening sharply lower Thursday before settling down around 2% by the end of the session.

As has been the case the past few quarters, it seems the market isn't quite ready to accept FireEye's ongoing transition toward becoming a more comprehensive security platform leader rather than "just" a network-security product vendor. And it certainly doesn't help that billings -- generally a key metric for gauging future growth -- arrived well below guidance.

Still, let's take a look at FireEye's headline numbers to see how it fared to end 2019:

Metric

Q4 2019

Q4 2018

Change

Revenue

$235.1 million

$217.5 million

8.1%

GAAP net income

($49.2 million)

($48.4 million)

N/A

GAAP earnings per share

($0.23)

($0.25)

N/A

Data source: FireEye. GAAP = generally accepted accounting principles.

Gold padlock sitting on top of a notebook computer keyboard.

IMAGE SOURCE: GETTY IMAGES.

"We continue to accelerate our transformation..."

After backing out items like stock-based compensation and acquisition expenses, FireEye's non-GAAP (adjusted) net income arrived at $14.9 million, or $0.07 per share, up from $0.06 per share a year earlier.

For perspective, these results were well above FireEye's guidance provided in October, which called for quarterly adjusted earnings per share of $0.03 to $0.05, and revenue ranging from $224 million to $228 million.

As measured by business segment, product, subscription, and support revenue rose 3.5% to $185 million, while Mandiant professional services revenue jumped 29.4% to $50.1 million.

Billings, however, climbed only 3% to $274 million, well below guidance for a range of $285 million to $295 million. According to CFO Frank Verdecanna, FireEye's billings this quarter were hurt by a two-month decrease in average contract lengths for subscription and support contracts, effectively reducing billings by roughly $15 million. During the subsequent conference call, Verdecanna elaborated that FireEye was seeing a "reluctance" from mid-market and channel customers to bill multiyear contracts up front, which led the company to adjust its terms and compensation plans accordingly.

Verdecanna added, however, that average contract lengths don't negatively impact annual recurring revenue (ARR), which grew roughly 6% sequentially to end the quarter at $587 million. That included a 31% increase in cloud subscription and managed services ARR to $280 million.

FireEye CEO Kevin Mandia stated:

We continue to accelerate our transformation to a comprehensive security solutions company. Our higher growth solutions, which include Platform, Cloud Subscription, Managed Services and Mandiant services, were 59 percent of our billings in the fourth quarter and increased 23 percent from a year ago. We anticipate that these solutions will continue to eclipse the on-premise portion of our business in 2020.

What now?

For the first quarter of 2020, FireEye told investors to expect revenue of $222 million to $226 million, billings of $165 million to $175 million, and an adjusted net loss per share of between $0.03 and $0.05.

As such, FireEye expects full-year 2020 revenue of $935 million to $945 million (up from $889 million in 2019), billings of $930 million to $950 million (down from $926 million in 2019), and adjusted net income per share of between $0.20 and $0.24 (up from $0.05 per share in 2019). Both FireEye's Q1 and full-year guidance assume average contract lengths will be roughly two to three months shorter than in 2019.

In the end, it's hard to fault FireEye for tweaking its approach to contract lengths given resistance from certain clients to multiyear deals. But until investors receive more assurance that this trend is of little consequence to FireEye's longer-term growth and business transition, it's no surprise to see shares of this tech stock pulling back.