diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt
index 3dabdbeaa1e1091db35b798f19cf9f3b2b74848f..ef830951e64f2ecb183df648115bbbcd6a3d658c 100644
--- a/doc/src/Section_commands.txt
+++ b/doc/src/Section_commands.txt
@@ -583,6 +583,7 @@ USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
 "indent"_fix_indent.html,
 "latte"_fix_latte.html,
 "langevin (k)"_fix_langevin.html,
+"langevin/spin"_fix_langevin_spin.hmtl,
 "lineforce"_fix_lineforce.html,
 "momentum (k)"_fix_momentum.html,
 "move"_fix_move.html,
@@ -606,6 +607,7 @@ USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
 "nve/line"_fix_nve_line.html,
 "nve/noforce"_fix_nve_noforce.html,
 "nve/sphere (o)"_fix_nve_sphere.html,
+"nve/spin"_fix_nve_spin.html,
 "nve/tri"_fix_nve_tri.html,
 "nvt (iko)"_fix_nh.html,
 "nvt/asphere (o)"_fix_nvt_asphere.html,
@@ -618,6 +620,7 @@ USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
 "planeforce"_fix_planeforce.html,
 "poems"_fix_poems.html,
 "pour"_fix_pour.html,
+"precession/spin"_fix_precession_spin.html,
 "press/berendsen"_fix_press_berendsen.html,
 "print"_fix_print.html,
 "property/atom (k)"_fix_property_atom.html,
@@ -824,6 +827,7 @@ KOKKOS, o = USER-OMP, t = OPT.
 "sna/atom"_compute_sna_atom.html,
 "snad/atom"_compute_sna_atom.html,
 "snav/atom"_compute_sna_atom.html,
+"spin"_compute_spin.html,
 "stress/atom"_compute_stress_atom.html,
 "temp (k)"_compute_temp.html,
 "temp/asphere"_compute_temp_asphere.html,
@@ -1017,6 +1021,10 @@ KOKKOS, o = USER-OMP, t = OPT.
 "snap (k)"_pair_snap.html,
 "soft (go)"_pair_soft.html,
 "sw (giko)"_pair_sw.html,
+"spin/dmi"_pair_spin_dmi.html,
+"spin/exchange"_pair_spin_exchange.html,
+"spin/magelec"_pair_spin_magelec.html,
+"spin/neel"_pair_spin_neel.html,
 "table (gko)"_pair_table.html,
 "tersoff (giko)"_pair_tersoff.html,
 "tersoff/mod (gko)"_pair_tersoff_mod.html,
diff --git a/doc/src/computes.txt b/doc/src/computes.txt
index 1b64e2e5b46393313fc74099ef9bbf04da946b74..12de3e2788eed4ac4f077fd2e9dc41be9b722a72 100644
--- a/doc/src/computes.txt
+++ b/doc/src/computes.txt
@@ -95,6 +95,7 @@ Computes :h1
    compute_smd_ulsph_stress
    compute_smd_vol
    compute_sna_atom
+   compute_spin
    compute_stress_atom
    compute_tally
    compute_tdpd_cc_atom
diff --git a/doc/src/fix_langevin_spin.txt b/doc/src/fix_langevin_spin.txt
index 246ee023312932cc3325d5c87f84d5ebe389fe0c..51f085ebdcbd389dbceebe8e28f5d31fbe1ee4ac 100644
--- a/doc/src/fix_langevin_spin.txt
+++ b/doc/src/fix_langevin_spin.txt
@@ -27,7 +27,7 @@ fix 2 all langevin/spin 300.0 0.01 21 :pre
 
 Apply a Langevin thermostat as described in "(Mayergoyz)"_#Mayergoyz1 to the 
 magnetic spins associated to the atoms. 
-Used with "fix integration spin"_fix_integration_spin.html, this command performs 
+Used with "fix nve/spin"_fix_nve_spin.html, this command performs 
 Brownian dynamics (BD). 
 A random torque and a transverse dissipation are applied to each spin i according to
 the following stochastic differential equation:
@@ -48,9 +48,9 @@ Note: due to the form of the sLLG equation, this fix has to be defined just
 before the nve/spin fix (and after all other magnetic fixes). 
 As an example:
 
-fix 1 all force/spin zeeman 0.01 0.0 0.0 1.0
+fix 1 all precession/spin zeeman 0.01 0.0 0.0 1.0
 fix 2 all langevin/spin 300.0 0.01 21 
-fix 3 all integration/spin lattice yes :pre
+fix 3 all nve/spin lattice yes :pre
 
 is correct, but defining a force/spin command after the langevin/spin command
 would give an error message. 
@@ -80,16 +80,15 @@ The {langevin/spin} fix is part of the SPIN package.
 This style is only enabled if LAMMPS was built with this package.
 See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
-The numerical integration has to be performed with {fix/nve/spin} 
-when {langevin/spin} is enabled. 
+The numerical integration has to be performed with {fix nve/spin}
+when {fix langevin/spin} is enabled. 
 
-This fix has to be the last defined magnetic fix before the integration fix 
-("fix integration spin"_fix_integration_spin.html). 
+This fix has to be the last defined magnetic fix before the time
+integration fix (e.g. {fix nve/spin}). 
 
 [Related commands:]
 
-"fix integration spin"_fix_integration_spin.html, 
-"pair spin"_pair_spin.html
+"fix nve/spin"_fix_nve_spin.html, "fix precession/spin"_fix_precession_spin.html
 
 [Default:] none
 
diff --git a/doc/src/fixes.txt b/doc/src/fixes.txt
index 79c2f75b8ba46f2924c2e34ed98c81edd6fe71b8..9510217d029b79849ad03fc8092090472936e4fe 100644
--- a/doc/src/fixes.txt
+++ b/doc/src/fixes.txt
@@ -61,6 +61,7 @@ Fixes :h1
    fix_langevin
    fix_langevin_drude
    fix_langevin_eff
+   fix_langevin_spin
    fix_latte
    fix_lb_fluid
    fix_lb_momentum
@@ -99,6 +100,7 @@ Fixes :h1
    fix_nve_manifold_rattle
    fix_nve_noforce
    fix_nve_sphere
+   fix_nve_spin
    fix_nve_tri
    fix_nvk
    fix_nvt_asphere
@@ -114,6 +116,7 @@ Fixes :h1
    fix_planeforce
    fix_poems
    fix_pour
+   fix_precession_spin
    fix_press_berendsen
    fix_print
    fix_property_atom
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index 0764c593f7e56cc251588d800a53d06a11e232b4..22be6c7f53089e0589f8b6eac0c7c7cd1ca43260 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -176,6 +176,7 @@ fix_ipi.html
 fix_langevin.html
 fix_langevin_drude.html
 fix_langevin_eff.html
+fix_langevin_spin.html
 fix_latte.html
 fix_lb_fluid.html
 fix_lb_momentum.html
@@ -213,6 +214,7 @@ fix_nve_line.html
 fix_nve_manifold_rattle.html
 fix_nve_noforce.html
 fix_nve_sphere.html
+fix_nve_spin.html
 fix_nve_tri.html
 fix_nvk.html
 fix_nvt_asphere.html
@@ -229,6 +231,7 @@ fix_pimd.html
 fix_planeforce.html
 fix_poems.html
 fix_pour.html
+fix_precession_spin.html
 fix_press_berendsen.html
 fix_print.html
 fix_property_atom.html
@@ -381,6 +384,7 @@ compute_smd_ulsph_strain_rate.html
 compute_smd_ulsph_stress.html
 compute_smd_vol.html
 compute_sna_atom.html
+compute_spin.html
 compute_stress_atom.html
 compute_tally.html
 compute_tdpd_cc_atom.html
@@ -506,6 +510,10 @@ pair_sph_lj.html
 pair_sph_rhosum.html
 pair_sph_taitwater.html
 pair_sph_taitwater_morris.html
+pair_spin_dmi.html
+pair_spin_exchange.html
+pair_spin_magelec.html
+pair_spin_neel.html
 pair_srp.html
 pair_sw.html
 pair_table.html
diff --git a/doc/src/pair_spin_exchange.txt b/doc/src/pair_spin_exchange.txt
index 90a75705c7219800a15b6951afa01884765c6720..97b6d0b34f90a13e399d50f9b77a1b9587698b76 100644
--- a/doc/src/pair_spin_exchange.txt
+++ b/doc/src/pair_spin_exchange.txt
@@ -15,42 +15,42 @@ pair_style spin/exchange cutoff :pre
 cutoff = global cutoff pair (distance in metal units) :ulb,l
 
 :ule
-	
+
 [Examples:]
 
-pair_style spin/exchange 4.0	
+pair_style spin/exchange 4.0
 pair_coeff * * exchange 4.0 0.0446928 0.003496 1.4885
 pair_coeff 1 2 exchange 6.0 -0.01575 0.0 1.965 :pre
 
 [Description:]
 
 Style {spin/exchange} computes the exchange interaction between 
-pairs of magnetic spins: 
+pairs of magnetic spins:
 
 :c,image(Eqs/pair_spin_exchange_interaction.jpg)
 
 where si and sj are two neighboring magnetic spins of two particles, 
 rij = ri - rj is the inter-atomic distance between the two particles,
 and J(rij) is a function defining the intensity and the sign of the exchange 
-interaction.  
+interaction.
 
 This function is defined as:
 
 :c,image(Eqs/pair_spin_exchange_function.jpg)
 
-where a, b and d are the three constant coefficients defined in the associated 
-"pair_coeff" command.   
+where a, b and d are the three constant coefficients defined in the associated
+"pair_coeff" command.
 
-The coefficients a, b, and d need to be fitted so that the function above matches with 
+The coefficients a, b, and d need to be fitted so that the function above matches with
 the value of the exchange interaction for the N neighbor shells taken into account.
 
-Examples and more explanations about this function and its parametrization are reported 
+Examples and more explanations about this function and its parametrization are reported
 in "(Tranchida)"_#Tranchida3.
 
 From this exchange interaction, each spin i will be submitted 
 to a magnetic torque omega, and its associated atom can be submitted to a
-force F for spin-lattice calculations (see 
-"fix_integration_spin"_fix_integration_spin.html), such as: 
+force F for spin-lattice calculations (see "fix_nve_spin"_fix_nve_spin.html),
+such as:
 
 :c,image(Eqs/pair_spin_exchange_forces.jpg)
 
diff --git a/doc/src/pair_spin_me.txt b/doc/src/pair_spin_magelec.txt
similarity index 86%
rename from doc/src/pair_spin_me.txt
rename to doc/src/pair_spin_magelec.txt
index 8186775b7795f62110588c03d4ad9112ae609ef3..0185a5abb2ea0fedb47b747e35eec04b9cf108ee 100644
--- a/doc/src/pair_spin_me.txt
+++ b/doc/src/pair_spin_magelec.txt
@@ -15,7 +15,7 @@ pair_style spin/me cutoff :pre
 cutoff = global cutoff pair (distance in metal units) :ulb,l
 
 :ule
-	
+
 [Examples:]
 
 pair_style spin/me 4.5
@@ -29,16 +29,16 @@ pairs of magnetic spins. According to the derivation reported in
 
 :c,image(Eqs/pair_spin_me_interaction.jpg)
 
-where si and sj are neighboring magnetic spins of two particles, 
-eij = (ri - rj)/|ri-rj| is the normalized separation vector between the 
+where si and sj are neighboring magnetic spins of two particles,
+eij = (ri - rj)/|ri-rj| is the normalized separation vector between the
 two particles, and E is an electric polarization vector.
-The norm and direction of E are giving the intensity and the 
+The norm and direction of E are giving the intensity and the
 direction of a screened dielectric atomic polarization (in eV).
 
-From this magneto-electric interaction, each spin i will be submitted 
+From this magneto-electric interaction, each spin i will be submitted
 to a magnetic torque omega, and its associated atom can be submitted to a
-force F for spin-lattice calculations (see 
-"fix_integration_spin"_fix_integration_spin.html), such as: 
+force F for spin-lattice calculations (see "fix_nve_spin"_fix_nve_spin.html),
+such as:
 
 :c,image(Eqs/pair_spin_me_forces.jpg)
 
@@ -51,14 +51,14 @@ More details about the derivation of these torques/forces are reported in
 
 [Restrictions:]
 
-All the {pair/spin} styles are part of the SPIN package. 
+All the {pair/spin} styles are part of the SPIN package.
 These styles are only enabled if LAMMPS was built with this package, and
-if the atom_style "spin" was declared. 
+if the atom_style "spin" was declared.
 See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 [Related commands:]
 
-"atom_style spin"_atom_style.html, "pair_coeff"_pair_coeff.html, 
+"atom_style spin"_atom_style.html, "pair_coeff"_pair_coeff.html,
 "pair_spin_exchange"_pair_spin_exchange.html, "pair_eam"_pair_eam.html,
 
 [Default:] none
diff --git a/doc/src/pairs.txt b/doc/src/pairs.txt
index 202aaa9c0f8354ebadf7a2f24156e3fb19b02fd2..1a5e98a10964f63e7c2c3cfbf8a4faaef3967271 100644
--- a/doc/src/pairs.txt
+++ b/doc/src/pairs.txt
@@ -97,6 +97,10 @@ Pair Styles :h1
    pair_sph_rhosum
    pair_sph_taitwater
    pair_sph_taitwater_morris
+   pair_spin_dmi
+   pair_spin_exchange
+   pair_spin_magelec
+   pair_spin_neel
    pair_srp
    pair_sw
    pair_table
diff --git a/doc/src/tutorials.txt b/doc/src/tutorials.txt
index 97e78838414d280b6e4960a3fc9486e8146297b8..338439ac8e9387c080e8bfd32bf237e85984ec0e 100644
--- a/doc/src/tutorials.txt
+++ b/doc/src/tutorials.txt
@@ -9,7 +9,6 @@ Tutorials :h1
    tutorial_github
    tutorial_pylammps
    tutorial_bash_on_windows
-   tutorial_spin
    body
    manifolds
 
diff --git a/src/SPIN/pair_spin.cpp b/src/SPIN/pair_spin.cpp
old mode 100755
new mode 100644
diff --git a/src/SPIN/pair_spin.h b/src/SPIN/pair_spin.h
old mode 100755
new mode 100644
diff --git a/src/SPIN/pair_spin_dmi.cpp b/src/SPIN/pair_spin_dmi.cpp
old mode 100755
new mode 100644
diff --git a/src/SPIN/pair_spin_dmi.h b/src/SPIN/pair_spin_dmi.h
old mode 100755
new mode 100644
diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp
old mode 100755
new mode 100644
diff --git a/src/SPIN/pair_spin_exchange.h b/src/SPIN/pair_spin_exchange.h
old mode 100755
new mode 100644
diff --git a/src/SPIN/pair_spin_magelec.cpp b/src/SPIN/pair_spin_magelec.cpp
old mode 100755
new mode 100644
diff --git a/src/SPIN/pair_spin_magelec.h b/src/SPIN/pair_spin_magelec.h
old mode 100755
new mode 100644
diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp
old mode 100755
new mode 100644
diff --git a/src/SPIN/pair_spin_neel.h b/src/SPIN/pair_spin_neel.h
old mode 100755
new mode 100644