Intelligent agent systems are often used to implement complex software systems. A key aspect of agent systems is goals: a programmer or user defines a set of goals for an agent, and then the agent is left to determine how best to satisfy the goals assigned to it. Such goals include both achievement goals and maintenance goals. An achievement goal describes a particular state the agent would like to become true, such as being in a particular location or having a particular bank balance. A maintenance goal specifies a condition which is to be kept satisfied, such as ensuring that a vehicle stays below a certain speed, or that it has sufficient fuel. Current agent systems usually only utilize reactive maintenance goals, in that the agent only takes action after the maintenance condition has been violated. In this paper, we discuss methods by which maintenance goals can be made proactive, i.e., acting before a maintenance condition is violated, having predicted that the maintenance condition will be violated in the future. We provide a representation of proactive maintenance goals, reasoning algorithms, an operational semantics that realizes these algorithms and an experimental evaluation of our approach.