Deprecated: Return type of WPCF7_FormTag::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/contact-form-7/includes/form-tag.php on line 395

Deprecated: Return type of WPCF7_FormTag::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/contact-form-7/includes/form-tag.php on line 387

Deprecated: Return type of WPCF7_FormTag::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/contact-form-7/includes/form-tag.php on line 381

Deprecated: Return type of WPCF7_FormTag::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/contact-form-7/includes/form-tag.php on line 399

Deprecated: Return type of WPCF7_Validation::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/contact-form-7/includes/validation.php on line 78

Deprecated: Return type of WPCF7_Validation::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/contact-form-7/includes/validation.php on line 72

Deprecated: Return type of WPCF7_Validation::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/contact-form-7/includes/validation.php on line 59

Deprecated: Return type of WPCF7_Validation::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/contact-form-7/includes/validation.php on line 82

Deprecated: Automatic conversion of false to array is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/better-wp-security/core/modules.php on line 137

Deprecated: Return type of MC4WP_Container::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/mailchimp-for-wp/includes/class-container.php on line 71

Deprecated: Return type of MC4WP_Container::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/mailchimp-for-wp/includes/class-container.php on line 86

Deprecated: Return type of MC4WP_Container::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/mailchimp-for-wp/includes/class-container.php on line 104

Deprecated: Return type of MC4WP_Container::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/mailchimp-for-wp/includes/class-container.php on line 119

Deprecated: Optional parameter $data_attr declared before required parameter $popup_id is implicitly treated as a required parameter in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/popup-maker/includes/deprecated-filters.php on line 102

Deprecated: Constant FILTER_SANITIZE_STRING is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/conditionals/third-party/elementor-edit-conditional.php on line 22

Deprecated: Constant FILTER_SANITIZE_STRING is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/conditionals/third-party/elementor-edit-conditional.php on line 28

Warning: Cannot modify header information - headers already sent by (output started at /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/contact-form-7/includes/form-tag.php:3) in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/post-views-counter/includes/counter.php on line 315

Deprecated: Return type of Yoast\WP\Lib\Model::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/lib/model.php on line 547

Deprecated: Return type of Yoast\WP\Lib\ORM::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/lib/orm.php on line 2322

Deprecated: Return type of Yoast\WP\Lib\ORM::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/lib/orm.php on line 2333

Deprecated: Return type of Yoast\WP\Lib\ORM::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/lib/orm.php on line 2343

Deprecated: Return type of Yoast\WP\Lib\ORM::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/lib/orm.php on line 2355

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/builders/indexable-post-builder.php on line 108

Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/models/indexable.php on line 164

Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/models/indexable.php on line 164

Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/models/indexable.php on line 164
Julien Denormandie, héros des temps modernes
Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/models/indexable.php on line 164

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/builders/indexable-post-builder.php on line 108

Deprecated: Automatic conversion of false to array is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/inc/class-wpseo-image-utils.php on line 190

Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/models/indexable.php on line 164

Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/models/indexable.php on line 164

Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/models/indexable.php on line 164

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/builders/indexable-post-builder.php on line 108

Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/models/indexable.php on line 164

Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/models/indexable.php on line 164

Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/models/indexable.php on line 164

Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/models/indexable.php on line 164

Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/models/indexable.php on line 164

Deprecated: strtolower(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/wordpress-seo/src/generators/schema-generator.php on line 181
 

Ce site web utilise des cookies pour un meilleur service. En utilisant ce site, vous acceptez leur utilisation.

Gestion de patrimoineJulien Denormandie, héros des temps modernes

16 octobre 2024493529 min

Qui est Julien Denormandie ?

Derrière ce nom se cache un homme, le nouveau ministre du logement, qui a réussi ce qui jusqu’alors était considéré comme inconcevable : faire s’unir les fans d’immobilier de défiscalisation (biens neufs) et les amateurs d’investissements rentables (biens anciens).

 

Qu’est-ce que l’immobilier de défiscalisation ?

Le constat est le suivant : chaque année en France il faudrait construire plus de 500.000 nouveaux logements pour répondre à la demande, celle-ci étant due à de nombreux phénomènes tels que :

  • Les études : les jeunes étudient désormais dans des villes qui ne sont pas leur ville d’origine et cela implique de les loger ;
  • Les mutations professionnelles : il est de plus en plus rare de voir une personne effectuer toute sa carrière au sein d’une même société, dans une même ville et dans ce contexte, qui dit changement de société dit souvent changement de département, de région, donc de logement ;
  • Les divorces : cette mode de plus en plus répandue à travers le monde à une conséquence évidente ; là où il suffisait d’un seul hébergement pour accueillir une famille, il en faut désormais deux.

Or annuellement, on arrive à peine à construire plus de 350.000 nouveaux logements. Il y a donc un écart de près de 150.000 logements chaque année, qui vient creuser un déficit existant de plus d’un million de biens.

Pour réduire cet écart et combler ce déficit – l’État n’ayant déjà pas les moyens d’assurer de nombreuses autres dépenses publiques -, ce dernier a décidé de mettre les contribuables à contribution en leur “offrant“ un avantage fiscal en échange de leur implication dans la construction de nouveaux logements.

Le principe est simple et existe depuis les années 80 : un promoteur – les particuliers peuvent le faire d’eux-mêmes, ce qui est bien plus intéressant mais également beaucoup plus rare construit un programme immobilier de x logements, qui seront ensuite achetés par des investisseurs dans le but de les mettre en location.
En contrepartie de ce geste de bravoure citoyenne, l’État accorde à ces investisseurs une réduction fiscale.

 

Qu’est-ce qu’un investissement rentable ?

Depuis quelques années il y a un hic dans l’équation précédente : un concurrent déterminé à démontrer sa toute-puissance a fait son entrée dans l’arène. Ce valeureux guerrier, auto-proclamé “Investisseur Rentable“, emploie généralement des méthodes offensives pour justifier la pertinence de son message : un investissement est forcément mauvais s’il ne rapporte pas d’argent immédiatement.

En effet il est généralement convenu* d’admettre qu’un investissement de défiscalisation fait l’objet d’une rentabilité réduite et ce, pour 3 raisons :

  • Le prix d’achat supérieur au prix de marché ;
  • L’impossibilité (du moins de l’inutilité) de faire des travaux les premières années ;
  • Le plafonnement des loyers qui biaise (ou ne permet pas d’optimiser) la rentabilité de l’investissement.

*dans 90% des cas… et c’est pour cela que nous avons décidé, chez CSC, de nous concentrer sur les 10% restants (voir notre article : “Loi Pinel, aubaine ou arnaque ? La grande hypocrisie des investisseurs immobiliers“).

En présence des 3 éléments précédents il est donc courant de s’apercevoir que pour rembourser ses mensualités de prêt et payer les charges du bien, un particulier qui fait le choix de s’orienter vers un appartement neuf à des fins de défiscalisation – comme pour le dispositif Pinel par exemple – devra rajouter aux loyers et à l’avantage fiscal qu’il perçoit, une participation mensuelle de sa propre poche.

Et c’est précisément sur ce point que les “Investisseurs Rentables“ s’offusquent ; ils partent du principe qu’un bon investissement doit permettre aux loyers perçus de payer le prêt bancaire, les charges liées au bien (impôts et charges sociales inclus) mais également de laisser un petit (voire un gros) quelque chose à la fin : le fameux “cash-flow“.

 

Comment Julien Denormandie a-t-il réconcilié les camps ?

C’est dans ce contexte, qu’à mi-chemin entre “immobilier de défiscalisation“ et “investissement rentable“, est né le dispositif Denormandie. Et une expression illustre bien sa vocation : “couper la poire en deux“ !

 

  • Vous êtes un investisseur occasionnel ? Vous vous plaisez dans votre vie, y compris professionnelle, et vous n’avez aucune envie de la quitter ? Vous voudriez faire l’acquisition d’un bien mais vous ne voulez absolument pas vous impliquer dans cet investissement que vous voyez plutôt comme quelque chose de récréatif ? Vous en avez ras-le-bol du fisc et estimez qu’une carotte fiscale suffit à vous faire passer à l’action ? Vous êtes prêt à mettre 50, 100, ou 200€ de votre poche chaque mois dans cette opération et vous avez bien compris que ça sera toujours bien mieux que de ne rien faire du tout ?

Alors le Pinel peut être une solution envisageable qui répondra à vos attentes.

 

  • Vous êtes ou avez l’ambition d’être un investisseur professionnel ? Vous en avez marre de votre travail, vous le faites uniquement dans le but de pouvoir investir afin de le quitter rapidement, vous le détestez ? Vous êtes prêt(e) à vous impliquer dans votre (vos) investissement(s) car c’est pour vous une issue de secours et/ou un objectif de vie ? Vous savez que vous n’aurez pas besoin d’une carotte car la France est un paradis fiscal dans lequel on peut vagabonder avec le sourire aux lèvres lorsque l’on en maitrise les mécanismes ? Vous n’avez pas peur des travaux car vous savez que c’est l’un des moyens de réduire votre fiscalité immobilière ? Et enfin, il vous parait inconcevable de mettre ne serait-ce qu’un seul centime de votre poche dans vos opérations car vous attendez d’elles qu’elles vous rémunèrent immédiatement et pas dans 20 ans ?

Alors le Pinel n’est même pas une option et vous devriez commencer à chercher des biens anciens car le neuf ne répondra pas à vos attentes.

 

  • Vous êtes une sorte d’hybride entre les 2 profils précédents ?

Julien Denormandie vous a compris et son dispositif répondra en grande partie à l’ensemble de vos attentes.

 

Concrètement, le dispositif Denormandie, c’est quoi ?

C’est un dispositif Pinel 2.0. En effet, la plupart des conditions et des avantages sont les mêmes que ceux mis en place par Sylvia Pinel, ancienne ministre du logement, dans sa loi éponyme :

 

  • Conditions en Pinel, reprises en Denormandie :

– Il faut être fiscalement domicilié en France.
– Le logement doit être acquis entre le 1er janvier 2019 et le 31 décembre 2021.
– Le bien (appartement ou maison) doit être loué nu, pendant une durée minimale de 6 ans, à titre de résidence principale pour le locataire.
– Il faut respecter certains plafonds de loyers selon la zone de localisation du bien et le locataire ne doit pas toucher plus qu’un certain plafond de revenus annuels dépendant également de la situation géographique du logement.
– L’investisseur est limité à 2 acquisitions par an, dans la double limite de 300.000€ d’investissement et de 5.500€ de prix de revient au m2.

 

  • Avantages en Pinel, repris en Denormandie :

Le contribuable qui répond aux conditions évoquées ci-dessus se verra accorder une réduction d’Impôt sur le Revenu (IR) à hauteur de 12%, 18% ou 21% du montant de son investissement, selon qu’il loue son bien pendant 6 ans, 9 ans ou 12 ans.

 

  • Conditions propres au Denormandie, le différenciant notamment du Pinel :

– Là où le Pinel nécessitait d’investir dans un bien neuf répondant à certaines normes énergétiques et situé en zones tendues (A bis, A et B1, depuis la mise à jour du texte pour 2019…) ; le Denormandie offre la possibilité aux investisseurs de se tourner vers des biens anciens ne répondant pas à au moins 4 des 15 critères de décences et nécessitant des travaux de rénovation, à condition que ceux-ci représentent au moins 25% du budget final.

– Il faut par ailleurs que le bien soit situé dans l’une des 222 communes visées par le PACV (Plan Action Cœur de Ville). Notons également qu’outre le PACV, certaines communes seront également éligibles au dispositif Denormandie, sous condition de conclusion d’une convention d’ORT (Opération de Revalorisation du Territoire). Cette convention devra d’ailleurs être signée par les communes visées par le PACV, faute de quoi le dispositif ne sera pas applicable. Mais toutes devraient normalement se mettre à jour.

Vous pouvez retrouver la liste des communes du PACV ICI. Concernant celles visées par une ORT, vous pouvez contacter directement la mairie de la commune dans laquelle se situe le logement.

 

Ainsi, le dispositif Denormandie permet non seulement d’améliorer la rentabilité de son camarade Pinel – puisque le fait que le bien nécessite la réalisation de travaux offre une certaine marge de négociation à l’achat et permet de palier le problème d’acquisition surcotée par rapport au prix de marché –, tout en atténuant la perte de rentabilité due au plafonnement des loyers. Ces travaux permettent également d’optimiser la fiscalité immobilière, SOIT par le mécanisme du déficit foncier, SOIT par l’avantage fiscal perçu au titre du dispositif (les 12, 18 ou 21%).

Si le Pinel est au beurre ce que l’investissement rentable est à l’argent du beurre, le Denormandie pourrait bien être le derrière de sa créatrice.

 

Allons plus loin !

(Source : lerevenu.com)

Parmi les 222 villes visées par le PACV, 215 sont situées en Métropole (+ Corse), la plupart étant des villes de taille intermédiaire (moyenne de 30.000 habitants, avec un minimum de 6.000 et un maximum de plus de 130.000 à Limoges par exemple).

Sur l’ensemble de ces 215 villes, le prix moyen au m2 s’élève à 1.576€, ce qui confirme l’un des points précédemment évoqués : le coût d’acquisition d’un bien dans l’une de ces villes favorise la rentabilité que l’on peut en attendre. À titre comparatif, le prix moyen au m2 constaté sur l’ensemble du territoire métropolitain s’élève à 2.523€. Mais attention, il faudra bien entendu rajouter à ce prix d’achat le montant des travaux qui, dans ces villes en particulier et c’est d’ailleurs tout l’objet de ce dispositif, peuvent vite s’élever à 50% du montant global du projet. Quoiqu’il en soit, ceux-ci ne pouvant en aucun cas être inférieurs à 25%, cela signifie que pour un bien acheté 1.576€ au m2, le prix de revient global sera donc à minima de 2.101€ au m2.

À l’opposé de cette première statistique, il en est une seconde qui semble assez logique mais qui mérite d’être soulevée à son tour : le taux moyen de vacance locative sur ces 215 communes atteint les 11%, soit 4% de plus que la moyenne nationale. Encore une fois, il va de soi que “plus de rentabilité“ rime avec “plus de risques“. À vous d’évaluer, en fonction des risques que vous êtes prêt(e) à assumer, le niveau de rentabilité que vous souhaitez obtenir de cet investissement. Par ailleurs, il sera pertinent de connaitre ces secteurs avant d’y investir, voire d’être sur place et de s’impliquer personnellement dans le projet afin d’optimiser l’acquisition en elle-même ainsi que les coûts de rénovation qu’elle impose. Cela permettra de réduire les risques tout en augmentant la rentabilité.

Enfin, voici une dernière série de données qui pourraient vous aider à orienter votre décision : 10% des villes concernées par le PACV sont situées en zone A, 15% en B1 et 75% en zones B2 et Cces 2 dernières n’étant, rappelons-le, pas éligibles au dispositif Pinel neuf, bien qu’un plafond de loyer y soit applicable (comme le disait une ancienne prof de droit fiscal : “pourquoi faire simple quand on peut faire compliqué ?“).

 

Allons encore plus loin : les travaux et leur éligibilité !

D’après les premières indications dévoilées par le ministre du logement et en attente de textes officiels sur ce sujet, les travaux devront :

  • Soit permettre d’améliorer les performances énergétiques du logement, de l’ordre de 20% pour un appartement et de 30% pour une maison. Cela implique que le propriétaire devra réaliser un diagnostic avant le début des travaux et un autre à la fin de ceux-ci, afin de prouver l’amélioration des performances énergétiques.
  • Soit concerner au moins 2 des 5 types de rénovation admis : isolation des combles, isolation des murs, isolation des fenêtres, changement de chaudière, changement de production d’eau chaude.

Notons également que ces travaux pourront bénéficier de taux de TVA réduits, dans les dispositions suivantes :

  • Taux réduit à 10% : pour les travaux de transformation, d’amélioration, d’aménagement ou d’entretien (réfection des murs, réfection des sols, électricité, plomberie, etc).
  • Taux réduit à 5,5% : pour les travaux de rénovation ou d’amélioration énergétique, ou les travaux liés à ceux-ci. Sont cependant exclus les travaux de rénovation autres qu’à vocation d’amélioration énergétique, ainsi que ceux ayant des fins esthétiques.

 

NB : à l’heure à laquelle nous publions cet article, le décret relatif au dispositif Denormandie n’est pas encore paru et les informations indiquées précédemment, bien que ne devant pas trop changer dà première vue, pourraient malgré tout être quelque peu modifiées. Affaire à suivre.

Pour en savoir plus, tant sur les dispositifs évoqués (Pinel, Denormandie et bien d’autres encore…) que sur l’investissement immobilier ancien sous toutes ses formes (du parking à l’immeuble de rapport en passant par plus de 10 autres modes d’investissements…), rendez-vous sur : https://cs-c.fr/le-patrimoine-pour-tous/

 

Article publié le 20 février 2019

 

Alexandre Castro
CGP associé – CSConsulting SARL


Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d756600394/htdocs/www/blog/wp-content/plugins/simple-lightbox/includes/class.utilities.php on line 523