Homomorphic encryption aims at allowing computations on encrypted data without decryption other than that of the final result. This could provide an elegant solution to the issue of privacy preservation in data-based applications, such as those using machine learning, but several open issues hamper this plan. In this work we assess the possibility for homomorphic encryption to fully implement its program without relying on other techniques, such as multiparty computation, which may be impossible in many use cases (for instance due to the high level of communication required). We proceed in two steps: i) on the basis of the structured program theorem [Bohm, Jacopini] we identify the relevant minimal set of operations homomorphic encryption must be able to perform to implement any algorithm; and ii) we analyse the possibility to solve -and propose an implementation for- the most fundamentally relevant issue as it emerges from our analysis, that is, the implementation of conditionals (requiring comparison and selection/jump operations). We show how this issue clashes with the fundamental requirements of homomorphic encryption and could represent a drawback for its use as a complete solution in data-based applications, in particular machine learning, for privacy preservation. We note that our approach to comparisons is novel and entirely embedded in homomorphic encryption, differently from previous studies (moreover, we supplement it with the necessary selection/jump operation). A number of studies have indeed dealt with comparisons, but typically their algorithms rely on other techniques, such as secure multiparty computation, which required a) high level of communication among parties, and b) the data owner to decrypt intermediate results. Our protocol is also provably safe (sharing the same safety as the homomorphic encryption schemes), differently from other techniques such as OPE/ORE.